-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6aecc60
commit 6f1e4cf
Showing
8 changed files
with
338 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
65 changes: 65 additions & 0 deletions
65
...starter/src/test/kotlin/dev/bpmcrafters/processengineapi/adapter/c8/AbstractC8ApiITest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
package dev.bpmcrafters.processengineapi.adapter.c8 | ||
|
||
import dev.bpmcrafters.processengineapi.test.JGivenSpringBaseIntegrationTest | ||
import dev.bpmcrafters.processengineapi.test.ProcessTestHelper | ||
import io.camunda.tasklist.CamundaTaskListClient | ||
import io.camunda.zeebe.client.ZeebeClient | ||
import io.camunda.zeebe.client.api.response.DeploymentEvent | ||
import io.camunda.zeebe.process.test.assertions.BpmnAssert.assertThat | ||
import io.camunda.zeebe.spring.test.ZeebeSpringTest | ||
import io.mockk.mockk | ||
import org.junit.jupiter.api.AfterEach | ||
import org.junit.jupiter.api.BeforeEach | ||
import org.springframework.beans.factory.annotation.Autowired | ||
import org.springframework.boot.test.context.SpringBootTest | ||
import org.springframework.boot.test.mock.mockito.MockBean | ||
import org.springframework.context.annotation.Bean | ||
import org.springframework.context.annotation.Primary | ||
import org.springframework.test.annotation.DirtiesContext | ||
import org.springframework.test.context.ActiveProfiles | ||
import org.testcontainers.junit.jupiter.Testcontainers | ||
|
||
|
||
@SpringBootTest( | ||
classes = [C8TestApplication::class], | ||
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT | ||
) | ||
@ZeebeSpringTest | ||
@ActiveProfiles("itest") | ||
@DirtiesContext | ||
@Testcontainers | ||
abstract class AbstractC8ApiITest(processTestHelperImpl: ProcessTestHelper) : JGivenSpringBaseIntegrationTest(processTestHelperImpl) { | ||
|
||
companion object { | ||
const val KEY = "simple-process" | ||
const val START_MESSAGE = "startMessage" | ||
const val BPMN = "bpmn/$KEY.bpmn" | ||
|
||
const val USER_TASK = "user-perform-task" | ||
const val EXTERNAL_TASK = "execute-action-external" | ||
} | ||
|
||
@Autowired | ||
lateinit var zeebe: ZeebeClient | ||
|
||
/** | ||
* In tests we have no task list so also no need for the real client | ||
*/ | ||
@MockBean | ||
lateinit var camundaTaskListClient: CamundaTaskListClient | ||
|
||
@BeforeEach | ||
fun setUp() { | ||
val event: DeploymentEvent = zeebe.newDeployResourceCommand() | ||
.addResourceFromClasspath(BPMN) | ||
.send() | ||
.join() | ||
|
||
assertThat(event) | ||
} | ||
|
||
@AfterEach | ||
fun tearDown() { | ||
processTestHelper.clearAllSubscriptions() | ||
} | ||
} |
40 changes: 40 additions & 0 deletions
40
...tarter/src/test/kotlin/dev/bpmcrafters/processengineapi/adapter/c8/C8ProcessTestHelper.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package dev.bpmcrafters.processengineapi.adapter.c8 | ||
|
||
import dev.bpmcrafters.processengineapi.adapter.c8.task.delivery.PullUserTaskDelivery | ||
import dev.bpmcrafters.processengineapi.adapter.c8.task.delivery.SubscribingRefreshingUserTaskDelivery | ||
import dev.bpmcrafters.processengineapi.adapter.c8.task.delivery.SubscribingServiceTaskDelivery | ||
import dev.bpmcrafters.processengineapi.adapter.commons.task.InMemSubscriptionRepository | ||
import dev.bpmcrafters.processengineapi.adapter.commons.task.SubscriptionRepository | ||
import dev.bpmcrafters.processengineapi.process.ProcessInformation | ||
import dev.bpmcrafters.processengineapi.process.StartProcessApi | ||
import dev.bpmcrafters.processengineapi.task.ExternalTaskCompletionApi | ||
import dev.bpmcrafters.processengineapi.task.TaskSubscriptionApi | ||
import dev.bpmcrafters.processengineapi.task.UserTaskCompletionApi | ||
import dev.bpmcrafters.processengineapi.test.ProcessTestHelper | ||
|
||
class C8ProcessTestHelper( | ||
private val startProcessApi: StartProcessApi, | ||
private val userTaskDelivery: SubscribingRefreshingUserTaskDelivery, | ||
private val subscribingServiceTaskDelivery: SubscribingServiceTaskDelivery, | ||
private val taskSubscriptionApi: TaskSubscriptionApi, | ||
private val userTaskCompletionApi: UserTaskCompletionApi, | ||
private val externalTaskCompletionApi: ExternalTaskCompletionApi, | ||
private val subscriptionRepository: SubscriptionRepository | ||
) : ProcessTestHelper { | ||
|
||
override fun getStartProcessApi(): StartProcessApi = startProcessApi | ||
override fun getTaskSubscriptionApi(): TaskSubscriptionApi = taskSubscriptionApi | ||
override fun getUserTaskCompletionApi(): UserTaskCompletionApi = userTaskCompletionApi | ||
override fun getExternalTaskCompletionApi(): ExternalTaskCompletionApi = externalTaskCompletionApi | ||
|
||
override fun triggerUserTaskDeliveryManually() = userTaskDelivery.refresh() | ||
override fun triggerExternalTaskDeliveryManually() = subscribingServiceTaskDelivery.subscribe() | ||
|
||
override fun getProcessInformation(instanceId: String): ProcessInformation = ProcessInformation( | ||
instanceId = "fixme", | ||
meta = emptyMap() | ||
) | ||
|
||
override fun clearAllSubscriptions() = (subscriptionRepository as InMemSubscriptionRepository).deleteAllTaskSubscriptions() | ||
|
||
} |
29 changes: 29 additions & 0 deletions
29
...ter/src/test/kotlin/dev/bpmcrafters/processengineapi/adapter/c8/C8StartProcessApiITest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package dev.bpmcrafters.processengineapi.adapter.c8 | ||
|
||
import dev.bpmcrafters.processengineapi.test.ProcessTestHelper | ||
import io.toolisticon.testing.jgiven.THEN | ||
import io.toolisticon.testing.jgiven.WHEN | ||
import org.junit.jupiter.api.Test | ||
import org.springframework.beans.factory.annotation.Autowired | ||
|
||
class C8StartProcessApiITest(@Autowired processTestHelperImpl: ProcessTestHelper) : AbstractC8ApiITest(processTestHelperImpl) { | ||
|
||
@Test | ||
fun `should start process by definition without payload`() { | ||
WHEN | ||
.`start process by definition`(KEY) | ||
|
||
THEN | ||
.`we should have a running process`() | ||
} | ||
|
||
@Test | ||
fun `should start process by definition with payload`() { | ||
WHEN | ||
.`start process by definition with payload`(KEY, "key" to "value") | ||
|
||
THEN | ||
.`we should have a running process`() | ||
} | ||
|
||
} |
42 changes: 42 additions & 0 deletions
42
...-starter/src/test/kotlin/dev/bpmcrafters/processengineapi/adapter/c8/C8TestApplication.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package dev.bpmcrafters.processengineapi.adapter.c8 | ||
|
||
import com.tngtech.jgiven.integration.spring.EnableJGiven | ||
import dev.bpmcrafters.processengineapi.adapter.c8.task.delivery.SubscribingRefreshingUserTaskDelivery | ||
import dev.bpmcrafters.processengineapi.adapter.c8.task.delivery.SubscribingServiceTaskDelivery | ||
import dev.bpmcrafters.processengineapi.adapter.commons.task.SubscriptionRepository | ||
import dev.bpmcrafters.processengineapi.process.StartProcessApi | ||
import dev.bpmcrafters.processengineapi.task.ExternalTaskCompletionApi | ||
import dev.bpmcrafters.processengineapi.task.TaskSubscriptionApi | ||
import dev.bpmcrafters.processengineapi.task.UserTaskCompletionApi | ||
import dev.bpmcrafters.processengineapi.test.ProcessTestHelper | ||
import io.camunda.tasklist.CamundaTaskListClient | ||
import io.mockk.mockk | ||
import org.springframework.boot.autoconfigure.SpringBootApplication | ||
import org.springframework.context.annotation.Bean | ||
import org.springframework.context.annotation.Primary | ||
|
||
|
||
@EnableJGiven | ||
@SpringBootApplication | ||
class C8TestApplication { | ||
|
||
@Bean | ||
fun processTestHelper( | ||
startProcessApi: StartProcessApi, | ||
taskSubscriptionApi: TaskSubscriptionApi, | ||
userTaskDelivery: SubscribingRefreshingUserTaskDelivery, | ||
subscribingServiceTaskDelivery: SubscribingServiceTaskDelivery, | ||
userTaskCompletionApi: UserTaskCompletionApi, | ||
externalTaskCompletionApi: ExternalTaskCompletionApi, | ||
subscriptionRepository: SubscriptionRepository, | ||
): ProcessTestHelper = C8ProcessTestHelper( | ||
startProcessApi = startProcessApi, | ||
taskSubscriptionApi = taskSubscriptionApi, | ||
userTaskDelivery = userTaskDelivery, | ||
subscribingServiceTaskDelivery = subscribingServiceTaskDelivery, | ||
userTaskCompletionApi = userTaskCompletionApi, | ||
externalTaskCompletionApi = externalTaskCompletionApi, | ||
subscriptionRepository = subscriptionRepository | ||
) | ||
|
||
} |
17 changes: 17 additions & 0 deletions
17
...e-adapter/camunda-platform-8-spring-boot-starter/src/test/resources/application-itest.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
spring: | ||
application: | ||
name: ITest | ||
|
||
dev: | ||
bpm-crafters: | ||
process-api: | ||
adapter: | ||
c8: | ||
user-tasks: | ||
delivery-strategy: subscription_refreshing | ||
fixed-rate-schedule-rate: 5000 # every 5 seconds | ||
tasklist-url: localhost | ||
fixed-rate-refresh-rate: 5000 # every 5 seconds | ||
service-tasks: | ||
delivery-strategy: subscription | ||
worker-id: execute-action-external |
106 changes: 106 additions & 0 deletions
106
...dapter/camunda-platform-8-spring-boot-starter/src/test/resources/bpmn/simple-process.bpmn
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_0jyd698" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.22.0" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.4.0"> | ||
<bpmn:process id="simple-process" name="Simple Process" isExecutable="true"> | ||
<bpmn:startEvent id="started" name="Started"> | ||
<bpmn:outgoing>Flow_14ng1om</bpmn:outgoing> | ||
</bpmn:startEvent> | ||
<bpmn:sequenceFlow id="Flow_14ng1om" sourceRef="started" targetRef="Gateway_0r4dt9x" /> | ||
<bpmn:serviceTask id="service-do-action1" name="Execute action"> | ||
<bpmn:extensionElements> | ||
<zeebe:taskDefinition type="execute-action-external" /> | ||
</bpmn:extensionElements> | ||
<bpmn:incoming>Flow_0zaxz2a</bpmn:incoming> | ||
<bpmn:outgoing>Flow_1cwg293</bpmn:outgoing> | ||
</bpmn:serviceTask> | ||
<bpmn:userTask id="user-perform-task" name="Perform User Task"> | ||
<bpmn:extensionElements> | ||
<zeebe:assignmentDefinition assignee="kermit" candidateGroups="avengers" candidateUsers="gonzo, fozzy" /> | ||
<zeebe:formDefinition formKey="user-task-form-1" /> | ||
</bpmn:extensionElements> | ||
<bpmn:incoming>Flow_0kv6x7n</bpmn:incoming> | ||
<bpmn:outgoing>Flow_08tjrzz</bpmn:outgoing> | ||
</bpmn:userTask> | ||
<bpmn:sequenceFlow id="Flow_08tjrzz" sourceRef="user-perform-task" targetRef="Gateway_1reomxy" /> | ||
<bpmn:endEvent id="ended" name="Finished"> | ||
<bpmn:incoming>Flow_0ljvt4k</bpmn:incoming> | ||
</bpmn:endEvent> | ||
<bpmn:sequenceFlow id="Flow_0zaxz2a" sourceRef="Gateway_0r4dt9x" targetRef="service-do-action1" /> | ||
<bpmn:parallelGateway id="Gateway_0r4dt9x"> | ||
<bpmn:incoming>Flow_14ng1om</bpmn:incoming> | ||
<bpmn:outgoing>Flow_0zaxz2a</bpmn:outgoing> | ||
<bpmn:outgoing>Flow_0kv6x7n</bpmn:outgoing> | ||
</bpmn:parallelGateway> | ||
<bpmn:sequenceFlow id="Flow_0kv6x7n" sourceRef="Gateway_0r4dt9x" targetRef="user-perform-task" /> | ||
<bpmn:sequenceFlow id="Flow_1cwg293" sourceRef="service-do-action1" targetRef="Gateway_1reomxy" /> | ||
<bpmn:parallelGateway id="Gateway_1reomxy"> | ||
<bpmn:incoming>Flow_1cwg293</bpmn:incoming> | ||
<bpmn:incoming>Flow_08tjrzz</bpmn:incoming> | ||
<bpmn:outgoing>Flow_0ljvt4k</bpmn:outgoing> | ||
</bpmn:parallelGateway> | ||
<bpmn:sequenceFlow id="Flow_0ljvt4k" sourceRef="Gateway_1reomxy" targetRef="ended" /> | ||
</bpmn:process> | ||
<bpmn:message id="Message_1v4m9q6" name="message1"> | ||
<bpmn:extensionElements> | ||
<zeebe:subscription correlationKey="=stringValue" /> | ||
</bpmn:extensionElements> | ||
</bpmn:message> | ||
<bpmn:signal id="Signal_2sv5u5p" name="signal1" /> | ||
<bpmn:error id="Error_1tp4181" name="action_error" errorCode="action_error" /> | ||
<bpmn:error id="Error_09pdhdd" name="user_error" errorCode="user_error" /> | ||
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> | ||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="simple-process"> | ||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="started"> | ||
<dc:Bounds x="179" y="189" width="36" height="36" /> | ||
<bpmndi:BPMNLabel> | ||
<dc:Bounds x="179" y="232" width="36" height="14" /> | ||
</bpmndi:BPMNLabel> | ||
</bpmndi:BPMNShape> | ||
<bpmndi:BPMNShape id="Gateway_023h4rq_di" bpmnElement="Gateway_0r4dt9x"> | ||
<dc:Bounds x="285" y="182" width="50" height="50" /> | ||
</bpmndi:BPMNShape> | ||
<bpmndi:BPMNShape id="Activity_1i94u5i_di" bpmnElement="user-perform-task"> | ||
<dc:Bounds x="420" y="250" width="100" height="80" /> | ||
</bpmndi:BPMNShape> | ||
<bpmndi:BPMNShape id="Activity_0saruaw_di" bpmnElement="service-do-action1"> | ||
<dc:Bounds x="420" y="80" width="100" height="80" /> | ||
</bpmndi:BPMNShape> | ||
<bpmndi:BPMNShape id="Gateway_02yufp5_di" bpmnElement="Gateway_1reomxy"> | ||
<dc:Bounds x="605" y="182" width="50" height="50" /> | ||
</bpmndi:BPMNShape> | ||
<bpmndi:BPMNShape id="Event_1x8zoeq_di" bpmnElement="ended"> | ||
<dc:Bounds x="782" y="189" width="36" height="36" /> | ||
<bpmndi:BPMNLabel> | ||
<dc:Bounds x="779" y="232" width="42" height="14" /> | ||
</bpmndi:BPMNLabel> | ||
</bpmndi:BPMNShape> | ||
<bpmndi:BPMNEdge id="Flow_14ng1om_di" bpmnElement="Flow_14ng1om"> | ||
<di:waypoint x="215" y="207" /> | ||
<di:waypoint x="285" y="207" /> | ||
</bpmndi:BPMNEdge> | ||
<bpmndi:BPMNEdge id="Flow_0zaxz2a_di" bpmnElement="Flow_0zaxz2a"> | ||
<di:waypoint x="310" y="182" /> | ||
<di:waypoint x="310" y="120" /> | ||
<di:waypoint x="420" y="120" /> | ||
</bpmndi:BPMNEdge> | ||
<bpmndi:BPMNEdge id="Flow_0kv6x7n_di" bpmnElement="Flow_0kv6x7n"> | ||
<di:waypoint x="310" y="232" /> | ||
<di:waypoint x="310" y="290" /> | ||
<di:waypoint x="420" y="290" /> | ||
</bpmndi:BPMNEdge> | ||
<bpmndi:BPMNEdge id="Flow_08tjrzz_di" bpmnElement="Flow_08tjrzz"> | ||
<di:waypoint x="520" y="290" /> | ||
<di:waypoint x="630" y="290" /> | ||
<di:waypoint x="630" y="232" /> | ||
</bpmndi:BPMNEdge> | ||
<bpmndi:BPMNEdge id="Flow_1cwg293_di" bpmnElement="Flow_1cwg293"> | ||
<di:waypoint x="520" y="120" /> | ||
<di:waypoint x="630" y="120" /> | ||
<di:waypoint x="630" y="182" /> | ||
</bpmndi:BPMNEdge> | ||
<bpmndi:BPMNEdge id="Flow_0ljvt4k_di" bpmnElement="Flow_0ljvt4k"> | ||
<di:waypoint x="655" y="207" /> | ||
<di:waypoint x="782" y="207" /> | ||
</bpmndi:BPMNEdge> | ||
</bpmndi:BPMNPlane> | ||
</bpmndi:BPMNDiagram> | ||
</bpmn:definitions> |