Search in sources :

Example 1 with ProcessDefinitionEntity

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);
}
Also used : CloudProcessDeployedEventImpl(org.activiti.cloud.api.process.model.impl.events.CloudProcessDeployedEventImpl) ProcessDefinitionEntity(org.activiti.cloud.services.query.model.ProcessDefinitionEntity) WebsocketSender(reactor.netty.http.client.HttpClient.WebsocketSender) GraphQLMessage(org.activiti.cloud.services.notifications.graphql.ws.api.GraphQLMessage) Date(java.util.Date) CloudProcessDeployedEvent(org.activiti.cloud.api.process.model.events.CloudProcessDeployedEvent) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 2 with ProcessDefinitionEntity

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);
}
Also used : ProcessDefinition(org.activiti.api.process.model.ProcessDefinition) ProcessDefinitionEntity(org.activiti.cloud.services.query.model.ProcessDefinitionEntity) ProcessModelEntity(org.activiti.cloud.services.query.model.ProcessModelEntity) CloudProcessDeployedEvent(org.activiti.cloud.api.process.model.events.CloudProcessDeployedEvent)

Example 3 with ProcessDefinitionEntity

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/>"));
}
Also used : ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ProcessDefinitionEntity(org.activiti.cloud.services.query.model.ProcessDefinitionEntity) ProcessModelEntity(org.activiti.cloud.services.query.model.ProcessModelEntity) Test(org.junit.jupiter.api.Test) WebMvcTest(org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest)

Example 4 with ProcessDefinitionEntity

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"));
}
Also used : ProcessDefinitionEntity(org.activiti.cloud.services.query.model.ProcessDefinitionEntity) Predicate(com.querydsl.core.types.Predicate) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 5 with ProcessDefinitionEntity

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"));
}
Also used : ProcessDefinitionEntity(org.activiti.cloud.services.query.model.ProcessDefinitionEntity) Predicate(com.querydsl.core.types.Predicate) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Aggregations

ProcessDefinitionEntity (org.activiti.cloud.services.query.model.ProcessDefinitionEntity)11 Test (org.junit.jupiter.api.Test)8 ProcessModelEntity (org.activiti.cloud.services.query.model.ProcessModelEntity)5 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)4 Predicate (com.querydsl.core.types.Predicate)3 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)3 WebMvcTest (org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest)3 CloudProcessDeployedEvent (org.activiti.cloud.api.process.model.events.CloudProcessDeployedEvent)2 CloudProcessDeployedEventImpl (org.activiti.cloud.api.process.model.impl.events.CloudProcessDeployedEventImpl)2 Date (java.util.Date)1 ProcessDefinition (org.activiti.api.process.model.ProcessDefinition)1 ProcessDefinitionImpl (org.activiti.api.runtime.model.impl.ProcessDefinitionImpl)1 GraphQLMessage (org.activiti.cloud.services.notifications.graphql.ws.api.GraphQLMessage)1 WebsocketSender (reactor.netty.http.client.HttpClient.WebsocketSender)1