Package org.activiti.rest.service.api.runtime

Source Code of org.activiti.rest.service.api.runtime.SignalsResourceTest

/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.activiti.rest.service.api.runtime;

import java.util.List;

import org.activiti.engine.runtime.Job;
import org.activiti.engine.test.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.HttpPost;
import org.apache.http.entity.StringEntity;

import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;


/**
* @author Frederik Heremans
*/
public class SignalsResourceTest extends BaseSpringRestTestCase {

  @Deployment(resources = {"org/activiti/rest/service/api/runtime/SignalsResourceTest.process-signal-start.bpmn20.xml"})
  public void testSignalEventReceivedSync() throws Exception {
    
    org.activiti.engine.repository.Deployment tenantDeployment =  repositoryService.createDeployment()
        .addClasspathResource("org/activiti/rest/service/api/runtime/SignalsResourceTest.process-signal-start.bpmn20.xml")
        .tenantId("my tenant")
        .deploy();
   
    try {
      
      // Signal without vars, without tenant
      ObjectNode requestNode = objectMapper.createObjectNode();
      requestNode.put("signalName", "The Signal");
     
      HttpPost httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_SIGNALS));
      httpPost.setEntity(new StringEntity(requestNode.toString()));
      closeResponse(executeRequest(httpPost, HttpStatus.SC_NO_CONTENT));
     
      // Check if process is started as a result of the signal without tenant ID set
      assertEquals(1, runtimeService.createProcessInstanceQuery().processInstanceWithoutTenantId().processDefinitionKey("processWithSignalStart1").count());
     
     
      // Signal with tenant
      requestNode.put("tenantId", "my tenant");
      httpPost.setEntity(new StringEntity(requestNode.toString()));
      closeResponse(executeRequest(httpPost, HttpStatus.SC_NO_CONTENT));
    
      // Check if process is started as a result of the signal, in the right tenant
      assertEquals(1, runtimeService.createProcessInstanceQuery().processInstanceTenantId("my tenant").processDefinitionKey("processWithSignalStart1").count());
     
     
      // Signal with tenant AND variables
      ArrayNode vars = requestNode.putArray("variables");
      ObjectNode var = vars.addObject();
      var.put("name", "testVar");
      var.put("value", "test");
     
      httpPost.setEntity(new StringEntity(requestNode.toString()));
      closeResponse(executeRequest(httpPost, HttpStatus.SC_NO_CONTENT));
     
      // Check if process is started as a result of the signal, in the right tenant and with var set
      assertEquals(1, runtimeService.createProcessInstanceQuery().processInstanceTenantId("my tenant")
          .processDefinitionKey("processWithSignalStart1")
          .variableValueEquals("testVar", "test")
          .count());
     
      // Signal without tenant AND variables
      requestNode.remove("tenantId");
     
      httpPost.setEntity(new StringEntity(requestNode.toString()));
      closeResponse(executeRequest(httpPost, HttpStatus.SC_NO_CONTENT));
     
      // Check if process is started as a result of the signal, witout tenant and with var set
      assertEquals(1, runtimeService.createProcessInstanceQuery().processInstanceWithoutTenantId()
          .processDefinitionKey("processWithSignalStart1")
          .variableValueEquals("testVar", "test")
          .count());
       
    } finally {
      // Clean up tenant-specific deployment
      if(tenantDeployment != null) {
        repositoryService.deleteDeployment(tenantDeployment.getId(), true);
      }
    }
  }
    
  @Deployment(resources = {"org/activiti/rest/service/api/runtime/SignalsResourceTest.process-signal-start.bpmn20.xml"})
  public void testSignalEventReceivedAsync() throws Exception {
    
    org.activiti.engine.repository.Deployment tenantDeployment =  repositoryService.createDeployment()
        .addClasspathResource("org/activiti/rest/service/api/runtime/SignalsResourceTest.process-signal-start.bpmn20.xml")
        .tenantId("my tenant")
        .deploy();

    try {
       
      // Signal without vars, without tenant
      ObjectNode requestNode = objectMapper.createObjectNode();
      requestNode.put("signalName", "The Signal");
      requestNode.put("async", true);
     
      HttpPost httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_SIGNALS));
      httpPost.setEntity(new StringEntity(requestNode.toString()));
      closeResponse(executeRequest(httpPost, HttpStatus.SC_ACCEPTED));
     
      // Check if job is queued as a result of the signal without tenant ID set
      assertEquals(1, managementService.createJobQuery().jobWithoutTenantId().count());
  
      // Signal with tenant
      requestNode.put("tenantId", "my tenant");
      httpPost.setEntity(new StringEntity(requestNode.toString()));
      closeResponse(executeRequest(httpPost, HttpStatus.SC_ACCEPTED));
     
      // Check if job is queued as a result of the signal, in the right tenant
      assertEquals(1, managementService.createJobQuery().jobTenantId("my tenant").count());
     
      // Signal with variables and async, should fail as it's not supported
      ArrayNode vars = requestNode.putArray("variables");
      ObjectNode var = vars.addObject();
      var.put("name", "testVar");
      var.put("value", "test");
     
      httpPost.setEntity(new StringEntity(requestNode.toString()));
      closeResponse(executeRequest(httpPost, HttpStatus.SC_BAD_REQUEST));
       
    } finally {
      // Clean up tenant-specific deployment
      if (tenantDeployment != null) {
        repositoryService.deleteDeployment(tenantDeployment.getId(), true);
      }
     
      // Clear jobs
      List<Job> jobs = managementService.createJobQuery().list();
      for (Job job : jobs) {
        managementService.deleteJob(job.getId());
      }
    }
  }
}
TOP

Related Classes of org.activiti.rest.service.api.runtime.SignalsResourceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.