use of org.activiti.cloud.services.query.model.ProcessDefinitionEntity in project activiti-cloud by Activiti.
the class MapBuilder method testGraphqlSubscriptionPROCESS_DEPLOYED.
@Test
public void testGraphqlSubscriptionPROCESS_DEPLOYED() throws JsonProcessingException {
ReplayProcessor<String> data = ReplayProcessor.create();
keycloakTokenProducer.setKeycloakTestUser(TESTADMIN);
final String auth = keycloakTokenProducer.authorizationHeaders().getFirst(AUTHORIZATION);
Map<String, Object> variables = new StringObjectMapBuilder().put("appName", "default-app").get();
Map<String, Object> payload = new StringObjectMapBuilder().put("query", "subscription($appName: String!) { " + " engineEvents(appName: [$appName], eventType: PROCESS_DEPLOYED) { " + " processDefinitionKey " + " eventType " + " } " + "}").put("variables", variables).get();
GraphQLMessage start = GraphQLMessage.builder().type(GraphQLMessageType.START).id("1").payload(payload).build();
String startMessage = objectMapper.writeValueAsString(start);
// given
CloudProcessDeployedEvent event1 = new CloudProcessDeployedEventImpl("id", new Date().getTime(), new ProcessDefinitionEntity()) {
{
setAppName("default-app");
setServiceName("rb-my-app");
setServiceFullName("serviceFullName");
setServiceType("runtime-bundle");
setServiceVersion("");
setProcessDefinitionId("processDefinitionId");
setProcessDefinitionKey("processDefinitionKey");
setProcessDefinitionVersion(1);
setProcessModelContent("processModelContent");
setBusinessKey("businessKey");
}
};
WebsocketSender client = HttpClient.create().baseUrl("ws://localhost:" + port).wiretap(true).headers(h -> h.add(AUTHORIZATION, auth)).websocket(GRAPHQL_WS).uri(WS_GRAPHQL_URI);
// start subscription
client.handle((i, o) -> {
o.options(NettyPipeline.SendOptions::flushOnEach).sendString(Mono.just(startMessage)).then().log("start").subscribe();
return i.receive().asString().log("data").take(1).doOnSubscribe(s -> producerChannel.output().send(MessageBuilder.withPayload(Arrays.array(event1)).setHeader("routingKey", "eventProducer").build())).delaySubscription(Duration.ofSeconds(1)).subscribeWith(data);
}).collectList().subscribe();
// then
Map<String, Object> message = Maps.of("data", Maps.of("engineEvents", Arrays.array(mapBuilder().put("processDefinitionKey", "processDefinitionKey").put("eventType", "PROCESS_DEPLOYED").get())));
String dataMessage = objectMapper.writeValueAsString(GraphQLMessage.builder().type(GraphQLMessageType.DATA).id("1").payload(message).build());
StepVerifier.create(data).expectNext(dataMessage).expectComplete().verify(TIMEOUT);
}
use of org.activiti.cloud.services.query.model.ProcessDefinitionEntity in project activiti-cloud by Activiti.
the class ProcessDeployedEventHandler method handle.
@Override
public void handle(CloudRuntimeEvent<?, ?> event) {
CloudProcessDeployedEvent processDeployedEvent = (CloudProcessDeployedEvent) event;
ProcessDefinition eventProcessDefinition = processDeployedEvent.getEntity();
LOGGER.debug("Handling process deployed event for " + eventProcessDefinition.getKey());
ProcessDefinitionEntity processDefinition = new ProcessDefinitionEntity(processDeployedEvent.getServiceName(), processDeployedEvent.getServiceFullName(), processDeployedEvent.getServiceVersion(), processDeployedEvent.getAppName(), processDeployedEvent.getAppVersion());
processDefinition.setId(eventProcessDefinition.getId());
processDefinition.setDescription(eventProcessDefinition.getDescription());
processDefinition.setFormKey(eventProcessDefinition.getFormKey());
processDefinition.setKey(eventProcessDefinition.getKey());
processDefinition.setName(eventProcessDefinition.getName());
processDefinition.setVersion(eventProcessDefinition.getVersion());
processDefinition.setServiceType(processDeployedEvent.getServiceType());
processDefinitionRepository.save(processDefinition);
ProcessModelEntity processModelEntity = new ProcessModelEntity(processDefinition, processDeployedEvent.getProcessModelContent());
processModelEntity.setId(processDefinition.getId());
processModelRepository.save(processModelEntity);
}
use of org.activiti.cloud.services.query.model.ProcessDefinitionEntity in project activiti-cloud by Activiti.
the class ProcessModelControllerIT method shouldReturnProcessModelById.
@Test
public void shouldReturnProcessModelById() throws Exception {
// given
given(securityPoliciesManager.arePoliciesDefined()).willReturn(true);
String processDefinitionId = UUID.randomUUID().toString();
ProcessDefinitionEntity processDefinition = new ProcessDefinitionEntity();
processDefinition.setKey("processKey");
processDefinition.setServiceName("serviceName");
given(securityPoliciesManager.canRead(processDefinition.getKey(), processDefinition.getServiceName())).willReturn(true);
given(entityFinder.findById(eq(processModelRepository), eq(processDefinitionId), anyString())).willReturn(new ProcessModelEntity(processDefinition, "<model/>"));
// when
mockMvc.perform(get("/v1/process-definitions/{processDefinitionId}/model", processDefinitionId).accept(MediaType.APPLICATION_XML_VALUE)).andExpect(status().isOk()).andExpect(content().xml("<model/>"));
}
use of org.activiti.cloud.services.query.model.ProcessDefinitionEntity in project activiti-cloud by Activiti.
the class ProcessDefinitionRestrictionServiceIT method shouldGetOnlyProcessDefinitionAllowedToTheUser.
@Test
public void shouldGetOnlyProcessDefinitionAllowedToTheUser() {
// given
given(securityManager.getAuthenticatedUserId()).willReturn("testuser");
// when
Predicate predicate = restrictionService.restrictProcessDefinitionQuery(null, SecurityPolicyAccess.READ);
// then
Iterable<ProcessDefinitionEntity> processDefinitions = processDefinitionRepository.findAll(predicate);
assertThat(processDefinitions).extracting(ProcessDefinitionEntity::getServiceName, ProcessDefinitionEntity::getKey).containsExactly(tuple("test-cmd-endpoint", "defKey1"));
}
use of org.activiti.cloud.services.query.model.ProcessDefinitionEntity in project activiti-cloud by Activiti.
the class ProcessDefinitionRestrictionServiceIT method shouldGetAllProcessDefinitionsAllowedToGroup.
@Test
public void shouldGetAllProcessDefinitionsAllowedToGroup() {
// given
when(securityManager.getAuthenticatedUserId()).thenReturn("bobinhr");
when(securityManager.getAuthenticatedUserGroups()).thenReturn(Collections.singletonList("hrgroup"));
// when
Predicate predicate = restrictionService.restrictProcessDefinitionQuery(null, SecurityPolicyAccess.READ);
// then
Iterable<ProcessDefinitionEntity> processDefinitions = processDefinitionRepository.findAll(predicate);
assertThat(processDefinitions).extracting(ProcessDefinitionEntity::getServiceName, ProcessDefinitionEntity::getKey).containsOnly(tuple("test-cmd-endpoint-wild", // access given via wildcard to hrgroup
"defKey1"), tuple("test-cmd-endpoint-wild", // access given via wildcard to hrgroup
"defKey2"));
}
Aggregations