aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java')
-rw-r--r--id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java111
1 files changed, 75 insertions, 36 deletions
diff --git a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java
index fa9f2ad06..a7e351e25 100644
--- a/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java
+++ b/id/server/idserverlib/src/test/java/at/gv/egovernment/moa/id/process/test/ProcessEngineTest.java
@@ -1,51 +1,66 @@
package at.gv.egovernment.moa.id.process.test;
-import static at.gv.egovernment.moa.id.process.ProcessInstanceState.*;
-import static org.junit.Assert.*;
+import static at.gv.egovernment.moa.id.process.ProcessInstanceState.NOT_STARTED;
+import static at.gv.egovernment.moa.id.process.ProcessInstanceState.SUSPENDED;
+import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.hibernate.cfg.Configuration;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
-
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils;
-import at.gv.egovernment.moa.id.commons.db.dao.session.InterfederationSessionStore;
-import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.commons.db.dao.session.AssertionStore;
+import at.gv.egovernment.moa.id.module.test.TestRequestImpl;
import at.gv.egovernment.moa.id.process.ProcessDefinitionParser;
import at.gv.egovernment.moa.id.process.ProcessDefinitionParserException;
import at.gv.egovernment.moa.id.process.ProcessEngine;
import at.gv.egovernment.moa.id.process.ProcessEngineImpl;
import at.gv.egovernment.moa.id.process.ProcessExecutionException;
import at.gv.egovernment.moa.id.process.ProcessInstance;
-import at.gv.egovernment.moa.id.process.dao.ProcessInstanceStore;
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration("/at/gv/egovernment/moa/id/process/spring/test/SpringExpressionAwareProcessEngineTest-context.xml")
public class ProcessEngineTest {
- private static ProcessEngine pe;
-
- @BeforeClass
- public static void init() throws IOException, ProcessDefinitionParserException {
-
- ProcessDefinitionParser pdp = new ProcessDefinitionParser();
+ @Autowired private static ProcessEngine pe;
- pe = new ProcessEngineImpl();
-
- ((ProcessEngineImpl) pe).setTransitionConditionExpressionEvaluator(new BooleanStringExpressionEvaluator());
- try (InputStream in = ProcessEngineTest.class.getResourceAsStream("SampleProcessDefinition1.xml")) {
- ((ProcessEngineImpl) pe).registerProcessDefinition(pdp.parse(in));
- }
- try (InputStream in = ProcessEngineTest.class.getResourceAsStream("SampleProcessDefinition2.xml")) {
- ((ProcessEngineImpl) pe).registerProcessDefinition(pdp.parse(in));
+ @Autowired private ApplicationContext applicationContext;
+
+ private boolean isInitialized = false;
+
+ @Before
+ public void init() throws IOException, ProcessDefinitionParserException {
+
+ if (!isInitialized) {
+ ProcessDefinitionParser pdp = new ProcessDefinitionParser();
+
+ if (pe == null) {
+ pe = applicationContext.getBean("processEngine", ProcessEngine.class);
+
+ }
+
+ ((ProcessEngineImpl) pe).setTransitionConditionExpressionEvaluator(new BooleanStringExpressionEvaluator());
+ try (InputStream in = ProcessEngineTest.class.getResourceAsStream("SampleProcessDefinition1.xml")) {
+ ((ProcessEngineImpl) pe).registerProcessDefinition(pdp.parse(in));
+ }
+ try (InputStream in = ProcessEngineTest.class.getResourceAsStream("SampleProcessDefinition2.xml")) {
+ ((ProcessEngineImpl) pe).registerProcessDefinition(pdp.parse(in));
+ }
+
+ initHibernateForTesting();
+ isInitialized = true;
}
-
- initHibernateForTesting();
}
-
-
+
private static void initHibernateForTesting() throws IOException{
InputStream in = ProcessEngineTest.class.getResourceAsStream("/at/gv/egovernment/moa/id/process/hibernate.configuration.test.properties");
@@ -56,8 +71,8 @@ public class ProcessEngineTest {
//ConfigurationDBUtils.initHibernate(props);
Configuration config = new Configuration();
config.addProperties(props);
- config.addAnnotatedClass(ProcessInstanceStore.class);
- config.addAnnotatedClass(InterfederationSessionStore.class);
+ //config.addAnnotatedClass(ProcessInstanceStore.class);
+ config.addAnnotatedClass(AssertionStore.class);
MOASessionDBUtils.initHibernate(config, props);
} catch (Exception e) {
e.printStackTrace();
@@ -66,38 +81,62 @@ public class ProcessEngineTest {
@Test
public void testSampleProcess1() throws IOException, ProcessDefinitionParserException, ProcessExecutionException {
-
+
+ TestRequestImpl testReq = new TestRequestImpl();
+
String piId = pe.createProcessInstance("SampleProcess1");
ProcessInstance pi = pe.getProcessInstance(piId);
assertEquals(NOT_STARTED, pi.getState());
// start process
- pe.start(piId);
+ testReq.setProcessInstanceID(piId);
+ pe.start(testReq);
pi = pe.getProcessInstance(piId);
assertEquals(SUSPENDED, pi.getState());
System.out.println("Do something asynchronously");
- pe.signal(piId);
- pi = pe.getProcessInstance(piId);
- assertEquals(ENDED, pi.getState());
+ testReq.setProcessInstanceID(piId);
+ pe.signal(testReq);
+ try {
+ pi = pe.getProcessInstance(piId);
+ throw new ProcessExecutionException("ProcessInstance should be removed already, but it was found.");
+ //assertEquals(ENDED, pi.getState());
+
+ } catch (IllegalArgumentException e) {
+ // do nothing because processInstance should be already removed
+
+ }
}
@Test
public void testSampleProcess2() throws IOException, ProcessDefinitionParserException, ProcessExecutionException {
+ TestRequestImpl testReq = new TestRequestImpl();
+
String piId = pe.createProcessInstance("SampleProcess2");
ProcessInstance pi = pe.getProcessInstance(piId);
assertEquals(NOT_STARTED, pi.getState());
// start process
- pe.start(piId);
+ testReq.setProcessInstanceID(piId);
+ pe.start(testReq);
pi = pe.getProcessInstance(piId);
assertEquals(SUSPENDED, pi.getState());
System.out.println("Do something asynchronously");
- pe.signal(piId);
- pi = pe.getProcessInstance(piId);
- assertEquals(ENDED, pi.getState());
+ testReq.setProcessInstanceID(piId);
+ pe.signal(testReq);
+ try {
+ pi = pe.getProcessInstance(piId);
+ throw new ProcessExecutionException("ProcessInstance should be removed already, but it was found.");
+ //assertEquals(ENDED, pi.getState());
+
+ } catch (IllegalArgumentException e) {
+ // do nothing because processInstance should be already removed
+
+ }
+
+
}
@Test(expected = IllegalArgumentException.class)