/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * 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.kie.server.integrationtests.jbpm; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertNotEquals; import java.util.List; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.kie.server.api.model.ReleaseId; import org.kie.server.api.model.instance.TaskSummary; import org.kie.server.integrationtests.shared.KieServerAssert; import org.kie.server.integrationtests.shared.KieServerDeployer; public class ContainerUpdateUiIntegrationTest extends JbpmKieServerBaseIntegrationTest { private static final ReleaseId releaseId = new ReleaseId("org.kie.server.testing", "definition-project", "1.0.0.Final"); private static final ReleaseId releaseId101 = new ReleaseId("org.kie.server.testing", "definition-project", "1.0.1.Final"); private static final String CONTAINER_ID = "definition-project"; private static final String HIRING_PROCESS_ID = "hiring"; @BeforeClass public static void buildAndDeployArtifacts() { KieServerDeployer.buildAndDeployCommonMavenParent(); KieServerDeployer.buildAndDeployMavenProject(ClassLoader.class.getResource("/kjars-sources/definition-project").getFile()); KieServerDeployer.buildAndDeployMavenProject(ClassLoader.class.getResource("/kjars-sources/definition-project-101").getFile()); } @Before public void cleanContainers() { disposeAllContainers(); createContainer(CONTAINER_ID, releaseId); } @Test public void testGetProcessFormAfterContainerUpdate() throws Exception { String result = uiServicesClient.getProcessForm(CONTAINER_ID, HIRING_PROCESS_ID, "en"); assertNotNull(result); assertTrue("Form doesn't contain original label!", result.contains("Candidate Name")); // Update container to new version. KieServerAssert.assertSuccess(client.updateReleaseId(CONTAINER_ID, releaseId101)); result = uiServicesClient.getProcessForm(CONTAINER_ID, HIRING_PROCESS_ID, "en"); assertNotNull(result); assertTrue("Form doesn't contain updated label!", result.contains("Candidate First Name And Surename")); } @Test public void testGetTaskFormAfterContainerUpdate() throws Exception { long processInstanceId = processClient.startProcess(CONTAINER_ID, HIRING_PROCESS_ID); assertTrue(processInstanceId > 0); try { String result = getFirstTaskForm(processInstanceId); assertNotNull(result); assertTrue("Form doesn't contain original label!", result.contains("Candidate Name")); // Update container to new version and restart process. processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); KieServerAssert.assertSuccess(client.updateReleaseId(CONTAINER_ID, releaseId101)); processInstanceId = processClient.startProcess(CONTAINER_ID, HIRING_PROCESS_ID); result = getFirstTaskForm(processInstanceId); assertNotNull(result); assertTrue("Form doesn't contain updated label!", result.contains("Candidate Whole Name")); } finally { processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); } } @Test public void testGetProcessImageViaUIClientTest() throws Exception { String originalResult = uiServicesClient.getProcessImage(CONTAINER_ID, HIRING_PROCESS_ID); assertNotNull(originalResult); assertFalse(originalResult.isEmpty()); // Update container to new version. KieServerAssert.assertSuccess(client.updateReleaseId(CONTAINER_ID, releaseId101)); String updatedResult = uiServicesClient.getProcessImage(CONTAINER_ID, HIRING_PROCESS_ID); assertNotNull(updatedResult); assertFalse(updatedResult.isEmpty()); assertNotEquals("Process image wasn't updated!", originalResult, updatedResult); } @Test public void testGetProcessInstanceImageViaUIClientTest() throws Exception { long processInstanceId = processClient.startProcess(CONTAINER_ID, HIRING_PROCESS_ID); assertTrue(processInstanceId > 0); try { String originalResult = uiServicesClient.getProcessInstanceImage(CONTAINER_ID, processInstanceId); assertNotNull(originalResult); assertFalse(originalResult.isEmpty()); // Update container to new version and restart process. processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); KieServerAssert.assertSuccess(client.updateReleaseId(CONTAINER_ID, releaseId101)); processInstanceId = processClient.startProcess(CONTAINER_ID, HIRING_PROCESS_ID); String updatedResult = uiServicesClient.getProcessInstanceImage(CONTAINER_ID, processInstanceId); assertNotNull(updatedResult); assertFalse(updatedResult.isEmpty()); assertNotEquals("Process instance image wasn't updated!", originalResult, updatedResult); } finally { processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); } } private String getFirstTaskForm(long processInstanceId) { List<TaskSummary> tasks = taskClient.findTasksByStatusByProcessInstanceId(processInstanceId, null, 0, 10); assertNotNull(tasks); assertEquals(1, tasks.size()); Long taskId = tasks.get(0).getId(); return uiServicesClient.getTaskForm(CONTAINER_ID, taskId, "en"); } }