Skip to content
This repository has been archived by the owner on Feb 13, 2021. It is now read-only.

Commit

Permalink
feat(AAE-102): test added
Browse files Browse the repository at this point in the history
  • Loading branch information
CTI777 committed Nov 14, 2019
1 parent 940d9b8 commit e0da575
Show file tree
Hide file tree
Showing 2 changed files with 150 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,19 @@
import static org.assertj.core.api.Assertions.tuple;
import static org.awaitility.Awaitility.await;

import java.util.Collections;
import java.util.List;

import org.activiti.api.process.model.BPMNMessage;
import org.activiti.api.process.model.MessageSubscription;
import org.activiti.api.process.model.builders.StartProcessPayloadBuilder;
import org.activiti.api.process.model.events.MessageSubscriptionEvent;
import org.activiti.cloud.api.model.shared.events.CloudRuntimeEvent;
import org.activiti.cloud.api.process.model.CloudProcessInstance;
import org.activiti.cloud.api.process.model.events.CloudBPMNMessageEvent;
import org.activiti.cloud.api.process.model.events.CloudMessageSubscriptionCancelledEvent;
import org.activiti.cloud.starter.tests.helper.MessageRestTemplate;
import org.activiti.cloud.starter.tests.helper.ProcessInstanceRestTemplate;
import org.apache.groovy.util.Maps;
import org.junit.Before;
import org.junit.Test;
Expand All @@ -46,19 +54,21 @@
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Collections;
import java.util.List;

@RunWith(SpringRunner.class)
@ActiveProfiles(AuditProducerIT.AUDIT_PRODUCER_IT)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource("classpath:application-test.properties")
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
@ContextConfiguration(classes = ServicesAuditITConfiguration.class)
public class MessageAuditProducerIT {
private static final String CATCH_MESSAGE = "catchMessage";


@Autowired
private MessageRestTemplate messageRestTemplate;

@Autowired
private ProcessInstanceRestTemplate processInstanceRestTemplate;

@Autowired
private AuditConsumerStreamHandler streamHandler;
Expand Down Expand Up @@ -254,7 +264,104 @@ public void shouldAuditBPMNEventsMessagesAreProduced() {

}

@Test
public void should_produceCloudMessageSubscriptionCancelledEvent_when_processIsDeleted() {
//when
ResponseEntity<CloudProcessInstance> startProcessEntity = processInstanceRestTemplate.startProcess(
new StartProcessPayloadBuilder()
.withProcessDefinitionKey(CATCH_MESSAGE)
.withVariable("correlationKey", "foo")
.withName("processInstanceName")
.withBusinessKey("businessKey")
.build());

assertThat(startProcessEntity.getStatusCode()).isEqualTo(HttpStatus.OK);

CloudProcessInstance processInstance = startProcessEntity.getBody();


await("Audit BPMNMessage Events").untilAsserted(() -> {
assertThat(streamHandler.getReceivedHeaders()).containsKeys(RUNTIME_BUNDLE_INFO_HEADERS);
assertThat(streamHandler.getReceivedHeaders()).containsKeys(ALL_REQUIRED_HEADERS);
List<CloudRuntimeEvent<?, ?>> receivedEvents = streamHandler.getAllReceivedEvents();

assertThat(receivedEvents)
.filteredOn(CloudBPMNMessageEvent.class::isInstance)
.extracting(CloudRuntimeEvent::getEventType,
CloudRuntimeEvent::getProcessDefinitionId,
CloudRuntimeEvent::getProcessInstanceId,
CloudRuntimeEvent::getProcessDefinitionKey,
CloudRuntimeEvent::getProcessDefinitionVersion,
CloudRuntimeEvent::getBusinessKey,
event -> bpmnMessage(event).getProcessDefinitionId(),
event -> bpmnMessage(event).getProcessInstanceId(),
event -> bpmnMessage(event).getMessagePayload().getName(),
event -> bpmnMessage(event).getMessagePayload().getCorrelationKey(),
event -> bpmnMessage(event).getMessagePayload().getBusinessKey()
)
.contains(
tuple(MESSAGE_WAITING,
processInstance.getProcessDefinitionId(),
processInstance.getId(),
processInstance.getProcessDefinitionKey(),
1, // version
processInstance.getBusinessKey(),
processInstance.getProcessDefinitionId(),
processInstance.getId(),
"testMessage",
"foo",
processInstance.getBusinessKey())
);

});


ResponseEntity<CloudProcessInstance> deleteProcessEntity = processInstanceRestTemplate.delete(startProcessEntity);
assertThat(deleteProcessEntity.getStatusCode()).isEqualTo(HttpStatus.OK);

await().untilAsserted(() -> {
assertThat(streamHandler.getReceivedHeaders()).containsKeys(RUNTIME_BUNDLE_INFO_HEADERS);
assertThat(streamHandler.getReceivedHeaders()).containsKeys(ALL_REQUIRED_HEADERS);
List<CloudRuntimeEvent<?, ?>> receivedEvents = streamHandler.getAllReceivedEvents();

assertThat(receivedEvents)
.filteredOn(CloudMessageSubscriptionCancelledEvent.class::isInstance)
.extracting(CloudRuntimeEvent::getEventType,
CloudRuntimeEvent::getProcessDefinitionId,
CloudRuntimeEvent::getProcessInstanceId,
CloudRuntimeEvent::getProcessDefinitionKey,
CloudRuntimeEvent::getProcessDefinitionVersion,
CloudRuntimeEvent::getBusinessKey,
event -> messageSubscription(event).getProcessDefinitionId(),
event -> messageSubscription(event).getProcessInstanceId(),
event -> messageSubscription(event).getEventName(),
event -> messageSubscription(event).getConfiguration(),
event -> messageSubscription(event).getBusinessKey()
)
.contains(
tuple(MessageSubscriptionEvent.MessageSubscriptionEvents.MESSAGE_SUBSCRIPTION_CANCELLED,
processInstance.getProcessDefinitionId(),
processInstance.getId(),
processInstance.getProcessDefinitionKey(),
1, // version
processInstance.getBusinessKey(),
processInstance.getProcessDefinitionId(),
processInstance.getId(),
"testMessage",
"foo",
processInstance.getBusinessKey())
);

});

}


private BPMNMessage bpmnMessage(CloudRuntimeEvent<?,?> event) {
return CloudBPMNMessageEvent.class.cast(event).getEntity();
}

private MessageSubscription messageSubscription(CloudRuntimeEvent<?,?> event) {
return CloudMessageSubscriptionCancelledEvent.class.cast(event).getEntity();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_09fwcyq" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Activiti Modeler" exporterVersion="3.0.0-beta.3">
<bpmn:process id="catchMessage" isExecutable="true">
<bpmn:startEvent id="StartEvent_1qgpcg4">
<bpmn:outgoing>SequenceFlow_0legdlu</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:endEvent id="EndEvent_14pd8l1">
<bpmn:incoming>SequenceFlow_1ydyu5f</bpmn:incoming>
</bpmn:endEvent>
<bpmn:intermediateCatchEvent id="IntermediateCatchEvent_0tds4h7">
<bpmn:incoming>SequenceFlow_0legdlu</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1ydyu5f</bpmn:outgoing>
<bpmn:messageEventDefinition id="MessageEventDefinition_0c1mgkk" messageRef="Message_08a361r" activiti:correlationKey="${correlationKey}"/>
</bpmn:intermediateCatchEvent>
<bpmn:sequenceFlow id="SequenceFlow_0legdlu" sourceRef="StartEvent_1qgpcg4" targetRef="IntermediateCatchEvent_0tds4h7" />
<bpmn:sequenceFlow id="SequenceFlow_1ydyu5f" sourceRef="IntermediateCatchEvent_0tds4h7" targetRef="EndEvent_14pd8l1" />
</bpmn:process>
<bpmn:message id="Message_08a361r" name="testMessage" />
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="catchMessage">
<bpmndi:BPMNShape id="StartEvent_1qgpcg4_di" bpmnElement="StartEvent_1qgpcg4">
<dc:Bounds x="156" y="81" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="EndEvent_14pd8l1_di" bpmnElement="EndEvent_14pd8l1">
<dc:Bounds x="394" y="81" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="IntermediateCatchEvent_0tds4h7_di" bpmnElement="IntermediateCatchEvent_0tds4h7">
<dc:Bounds x="275" y="81" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0legdlu_di" bpmnElement="SequenceFlow_0legdlu">
<di:waypoint x="192" y="99" />
<di:waypoint x="275" y="99" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_1ydyu5f_di" bpmnElement="SequenceFlow_1ydyu5f">
<di:waypoint x="311" y="99" />
<di:waypoint x="394" y="99" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>

0 comments on commit e0da575

Please sign in to comment.