package org.activiti.rest.service.api.repository; import java.util.Calendar; 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 the Deployment collection. * * @author Frederik Heremans */ public class DeploymentCollectionResourceTest extends BaseSpringRestTestCase { /** * Test getting deployments. * GET repository/deployments */ public void testGetDeployments() throws Exception { try { // Alter time to ensure different deployTimes Calendar yesterday = Calendar.getInstance(); yesterday.add(Calendar.DAY_OF_MONTH, -1); processEngineConfiguration.getClock().setCurrentTime(yesterday.getTime()); Deployment firstDeployment = repositoryService.createDeployment().name("Deployment 1") .category("DEF") .addClasspathResource("org/activiti/rest/service/api/repository/oneTaskProcess.bpmn20.xml") .deploy(); processEngineConfiguration.getClock().setCurrentTime(Calendar.getInstance().getTime()); Deployment secondDeployment = repositoryService.createDeployment().name("Deployment 2") .category("ABC") .addClasspathResource("org/activiti/rest/service/api/repository/oneTaskProcess.bpmn20.xml") .tenantId("myTenant") .deploy(); String baseUrl = RestUrls.createRelativeResourceUrl(RestUrls.URL_DEPLOYMENT_COLLECTION); assertResultsPresentInDataResponse(baseUrl, firstDeployment.getId(), secondDeployment.getId()); // Check name filtering String url = baseUrl + "?name=" + encode("Deployment 1"); assertResultsPresentInDataResponse(url, firstDeployment.getId()); // Check name-like filtering url = baseUrl + "?nameLike=" + encode("%ment 2"); assertResultsPresentInDataResponse(url, secondDeployment.getId()); // Check category filtering url = baseUrl +"?category=DEF"; assertResultsPresentInDataResponse(url, firstDeployment.getId()); // Check category-not-equals filtering url = baseUrl +"?categoryNotEquals=DEF"; assertResultsPresentInDataResponse(url, secondDeployment.getId()); // Check tenantId filtering url = baseUrl +"?tenantId=myTenant"; assertResultsPresentInDataResponse(url, secondDeployment.getId()); // Check tenantId filtering url = baseUrl +"?tenantId=unexistingTenant"; assertResultsPresentInDataResponse(url); // Check tenantId like filtering url = baseUrl +"?tenantIdLike="+ encode("%enant"); assertResultsPresentInDataResponse(url, secondDeployment.getId()); // Check without tenantId filtering url = baseUrl +"?withoutTenantId=true"; assertResultsPresentInDataResponse(url, firstDeployment.getId()); // Check ordering by name CloseableHttpResponse response = executeRequest(new HttpGet(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_DEPLOYMENT_COLLECTION) + "?sort=name&order=asc"), HttpStatus.SC_OK); JsonNode dataNode = objectMapper.readTree(response.getEntity().getContent()).get("data"); closeResponse(response); assertEquals(2L, dataNode.size()); assertEquals(firstDeployment.getId(), dataNode.get(0).get("id").textValue()); assertEquals(secondDeployment.getId(), dataNode.get(1).get("id").textValue()); // Check ordering by deploy time response = executeRequest(new HttpGet(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_DEPLOYMENT_COLLECTION) + "?sort=deployTime&order=asc"), HttpStatus.SC_OK); dataNode = objectMapper.readTree(response.getEntity().getContent()).get("data"); closeResponse(response); assertEquals(2L, dataNode.size()); assertEquals(firstDeployment.getId(), dataNode.get(0).get("id").textValue()); assertEquals(secondDeployment.getId(), dataNode.get(1).get("id").textValue()); // Check ordering by tenantId response = executeRequest(new HttpGet(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_DEPLOYMENT_COLLECTION) + "?sort=tenantId&order=desc"), HttpStatus.SC_OK); dataNode = objectMapper.readTree(response.getEntity().getContent()).get("data"); closeResponse(response); assertEquals(2L, dataNode.size()); assertEquals(secondDeployment.getId(), dataNode.get(0).get("id").textValue()); assertEquals(firstDeployment.getId(), dataNode.get(1).get("id").textValue()); // Check paging response = executeRequest(new HttpGet(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_DEPLOYMENT_COLLECTION) + "?sort=deployTime&order=asc&start=1&size=1"), HttpStatus.SC_OK); JsonNode responseNode = objectMapper.readTree(response.getEntity().getContent()); closeResponse(response); dataNode = responseNode.get("data"); assertEquals(1L, dataNode.size()); assertEquals(secondDeployment.getId(), dataNode.get(0).get("id").textValue()); assertEquals(2L, responseNode.get("total").longValue()); assertEquals(1L, responseNode.get("start").longValue()); assertEquals(1L, responseNode.get("size").longValue()); } 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); } } } }