diff --git a/history/taskana-loghistory-provider/pom.xml b/history/taskana-loghistory-provider/pom.xml
index 7c3e940d3..17cb7e8de 100644
--- a/history/taskana-loghistory-provider/pom.xml
+++ b/history/taskana-loghistory-provider/pom.xml
@@ -32,6 +32,10 @@
jackson-databind
${version.jackson-databind}
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+
@@ -40,10 +44,6 @@
${version.slf4j-test}
test
-
- com.fasterxml.jackson.datatype
- jackson-datatype-jsr310
-
org.assertj
assertj-core
diff --git a/history/taskana-loghistory-provider/src/main/java/pro/taskana/loghistory/impl/LogfileHistoryServiceProvider.java b/history/taskana-loghistory-provider/src/main/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImpl.java
similarity index 97%
rename from history/taskana-loghistory-provider/src/main/java/pro/taskana/loghistory/impl/LogfileHistoryServiceProvider.java
rename to history/taskana-loghistory-provider/src/main/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImpl.java
index 4d447e622..a1a68611e 100644
--- a/history/taskana-loghistory-provider/src/main/java/pro/taskana/loghistory/impl/LogfileHistoryServiceProvider.java
+++ b/history/taskana-loghistory-provider/src/main/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImpl.java
@@ -20,9 +20,9 @@ import pro.taskana.common.api.exceptions.SystemException;
import pro.taskana.spi.history.api.TaskanaHistory;
import pro.taskana.spi.history.api.events.TaskanaHistoryEvent;
-public class LogfileHistoryServiceProvider implements TaskanaHistory {
+public class LogfileHistoryServiceImpl implements TaskanaHistory {
- private static final Logger LOGGER = LoggerFactory.getLogger(LogfileHistoryServiceProvider.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(LogfileHistoryServiceImpl.class);
private static final String TASKANA_PROPERTIES = "/taskana.properties";
private static final String TASKANA_HISTORYLOGGER_NAME = "taskana.historylogger.name";
private static Logger historyLogger;
diff --git a/history/taskana-loghistory-provider/src/main/resources/META-INF/services/pro.taskana.spi.history.api.TaskanaHistory b/history/taskana-loghistory-provider/src/main/resources/META-INF/services/pro.taskana.spi.history.api.TaskanaHistory
index e36bde0e9..0d09d1cd6 100644
--- a/history/taskana-loghistory-provider/src/main/resources/META-INF/services/pro.taskana.spi.history.api.TaskanaHistory
+++ b/history/taskana-loghistory-provider/src/main/resources/META-INF/services/pro.taskana.spi.history.api.TaskanaHistory
@@ -1 +1 @@
-pro.taskana.loghistory.impl.LogfileHistoryServiceProvider
\ No newline at end of file
+pro.taskana.loghistory.impl.LogfileHistoryServiceImpl
diff --git a/history/taskana-loghistory-provider/src/test/java/pro/taskana/loghistory/impl/LogfileHistoryServiceProviderTest.java b/history/taskana-loghistory-provider/src/test/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImplTest.java
similarity index 88%
rename from history/taskana-loghistory-provider/src/test/java/pro/taskana/loghistory/impl/LogfileHistoryServiceProviderTest.java
rename to history/taskana-loghistory-provider/src/test/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImplTest.java
index f55ca7b43..4a15ac84c 100644
--- a/history/taskana-loghistory-provider/src/test/java/pro/taskana/loghistory/impl/LogfileHistoryServiceProviderTest.java
+++ b/history/taskana-loghistory-provider/src/test/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImplTest.java
@@ -15,10 +15,10 @@ import uk.org.lidalia.slf4jtest.TestLoggerFactory;
import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.spi.history.api.events.TaskanaHistoryEvent;
-class LogfileHistoryServiceProviderTest {
+class LogfileHistoryServiceImplTest {
static ObjectMapper objectMapper = new ObjectMapper();
- LogfileHistoryServiceProvider logfileHistoryServiceProvider = new LogfileHistoryServiceProvider();
+ LogfileHistoryServiceImpl logfileHistoryServiceImpl = new LogfileHistoryServiceImpl();
TestLogger logger = TestLoggerFactory.getTestLogger("AUDIT");
@Mock TaskanaEngine taskanaEngine;
@@ -35,7 +35,7 @@ class LogfileHistoryServiceProviderTest {
@Test
void should_LogEventAsJson_When_CreateIsCalled() throws Exception {
- logfileHistoryServiceProvider.initialize(taskanaEngine);
+ logfileHistoryServiceImpl.initialize(taskanaEngine);
TaskanaHistoryEvent eventToBeLogged = new TaskanaHistoryEvent();
eventToBeLogged.setId("someId");
eventToBeLogged.setUserId("someUser");
@@ -50,7 +50,7 @@ class LogfileHistoryServiceProviderTest {
eventToBeLogged.setTaskClassificationCategory("someTaskClassificationCategory");
eventToBeLogged.setDetails("someDetails");
- logfileHistoryServiceProvider.create(eventToBeLogged);
+ logfileHistoryServiceImpl.create(eventToBeLogged);
String logMessage = logger.getLoggingEvents().asList().get(0).getMessage();
diff --git a/history/taskana-loghistory-provider/src/main/resources/log4j2.xml b/history/taskana-loghistory-provider/src/test/resources/log4j2.xml
similarity index 97%
rename from history/taskana-loghistory-provider/src/main/resources/log4j2.xml
rename to history/taskana-loghistory-provider/src/test/resources/log4j2.xml
index f10ac77a2..ff8db73e0 100644
--- a/history/taskana-loghistory-provider/src/main/resources/log4j2.xml
+++ b/history/taskana-loghistory-provider/src/test/resources/log4j2.xml
@@ -20,7 +20,7 @@
@@ -58,4 +58,4 @@
-
\ No newline at end of file
+
diff --git a/history/taskana-loghistory-provider/src/test/resources/taskana.properties b/history/taskana-loghistory-provider/src/test/resources/taskana.properties
index bfe1c7474..8f740b321 100644
--- a/history/taskana-loghistory-provider/src/test/resources/taskana.properties
+++ b/history/taskana-loghistory-provider/src/test/resources/taskana.properties
@@ -18,3 +18,4 @@ taskana.german.holidays.enabled=true
taskana.german.holidays.corpus-christi.enabled=true
taskana.historylogger.name=AUDIT
+
diff --git a/history/taskana-simplehistory-provider/src/main/resources/META-INF/services/pro.taskana.spi.history.api.TaskanaHistory b/history/taskana-simplehistory-provider/src/main/resources/META-INF/services/pro.taskana.spi.history.api.TaskanaHistory
index 0d415ff5a..8dd76f1bc 100644
--- a/history/taskana-simplehistory-provider/src/main/resources/META-INF/services/pro.taskana.spi.history.api.TaskanaHistory
+++ b/history/taskana-simplehistory-provider/src/main/resources/META-INF/services/pro.taskana.spi.history.api.TaskanaHistory
@@ -1 +1 @@
-pro.taskana.simplehistory.impl.SimpleHistoryServiceImpl
\ No newline at end of file
+pro.taskana.simplehistory.impl.SimpleHistoryServiceImpl
diff --git a/rest/taskana-rest-spring-example-wildfly/pom.xml b/rest/taskana-rest-spring-example-wildfly/pom.xml
index f3c65e3fd..4d7e11e2f 100644
--- a/rest/taskana-rest-spring-example-wildfly/pom.xml
+++ b/rest/taskana-rest-spring-example-wildfly/pom.xml
@@ -42,6 +42,10 @@
org.springframework.boot
spring-boot-starter-tomcat
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
@@ -73,6 +77,12 @@
+
+ pro.taskana.simplehistory
+ taskana-simplehistory-rest-spring
+ ${project.version}
+ test
+
org.assertj
assertj-core
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/AbstractAccTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/AbstractAccTest.java
new file mode 100644
index 000000000..eba0c1982
--- /dev/null
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/AbstractAccTest.java
@@ -0,0 +1,132 @@
+package pro.taskana;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.Collections;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.hateoas.MediaTypes;
+import org.springframework.hateoas.mediatype.hal.Jackson2HalModule;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.client.RestTemplate;
+
+import pro.taskana.classification.rest.models.ClassificationSummaryRepresentationModel;
+import pro.taskana.simplehistory.rest.models.TaskHistoryEventListResource;
+import pro.taskana.task.api.models.ObjectReference;
+import pro.taskana.task.rest.models.TaskRepresentationModel;
+import pro.taskana.workbasket.rest.models.WorkbasketSummaryRepresentationModel;
+
+public class AbstractAccTest {
+
+ protected static final String DEPENDENCY_VERSION = "3.2.1-SNAPSHOT";
+ private static final String AUTHORIZATION_TEAMLEAD_1 = "Basic dGVhbWxlYWQtMTp0ZWFtbGVhZC0x";
+
+ /**
+ * Return a REST template which is capable of dealing with responses in HAL format.
+ *
+ * @return RestTemplate
+ */
+ protected static RestTemplate getRestTemplate() {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
+ mapper.registerModule(new Jackson2HalModule());
+ mapper
+ .registerModule(new ParameterNamesModule())
+ .registerModule(new Jdk8Module())
+ .registerModule(new JavaTimeModule());
+
+ MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
+ converter.setSupportedMediaTypes(Collections.singletonList(MediaTypes.HAL_JSON));
+ converter.setObjectMapper(mapper);
+
+ RestTemplate template = new RestTemplate();
+ // important to add first to ensure priority
+ template.getMessageConverters().add(0, converter);
+ return template;
+ }
+
+ protected HttpHeaders getHeadersTeamlead_1() {
+ HttpHeaders headers = new HttpHeaders();
+ headers.add("Authorization", AUTHORIZATION_TEAMLEAD_1);
+ headers.add("Content-Type", "application/json");
+ return headers;
+ }
+
+ protected TaskRepresentationModel getTaskResourceSample() {
+ ClassificationSummaryRepresentationModel classificationResource =
+ new ClassificationSummaryRepresentationModel();
+ classificationResource.setKey("L11010");
+ WorkbasketSummaryRepresentationModel workbasketSummary =
+ new WorkbasketSummaryRepresentationModel();
+ workbasketSummary.setWorkbasketId("WBI:100000000000000000000000000000000004");
+
+ ObjectReference objectReference = new ObjectReference();
+ objectReference.setCompany("MyCompany1");
+ objectReference.setSystem("MySystem1");
+ objectReference.setSystemInstance("MyInstance1");
+ objectReference.setType("MyType1");
+ objectReference.setValue("00000001");
+
+ TaskRepresentationModel taskRepresentationModel = new TaskRepresentationModel();
+ taskRepresentationModel.setClassificationSummary(classificationResource);
+ taskRepresentationModel.setWorkbasketSummary(workbasketSummary);
+ taskRepresentationModel.setPrimaryObjRef(objectReference);
+ return taskRepresentationModel;
+ }
+
+ protected ResponseEntity performGetHistoryEventsRestCall() {
+
+ HttpEntity httpEntity = new HttpEntity<>(getHeadersTeamlead_1());
+
+ ResponseEntity response =
+ getRestTemplate()
+ .exchange(
+ "http://127.0.0.1:" + "8080" + "/taskana/api/v1/task-history-event",
+ HttpMethod.GET,
+ httpEntity,
+ ParameterizedTypeReference.forType(TaskHistoryEventListResource.class));
+
+ return response;
+ }
+
+ protected ResponseEntity performCreateTaskRestCall() {
+
+ TaskRepresentationModel taskRepresentationModel = getTaskResourceSample();
+ ResponseEntity responseCreateTask =
+ getRestTemplate()
+ .exchange(
+ "http://127.0.0.1:" + "8080" + "/taskana/api/v1/tasks",
+ HttpMethod.POST,
+ new HttpEntity<>(taskRepresentationModel, getHeadersTeamlead_1()),
+ ParameterizedTypeReference.forType(TaskRepresentationModel.class));
+
+ return responseCreateTask;
+ }
+
+ protected String parseServerLog() throws Exception {
+
+ // TO-DO: make log4j log into rollingFile from log4j.xml
+ File file = new File("target/wildfly-13.0.0.Final/standalone/log/server.log");
+
+ BufferedReader br = new BufferedReader(new FileReader(file));
+
+ String str;
+ StringBuilder stringBuilder = new StringBuilder();
+ while ((str = br.readLine()) != null) {
+ stringBuilder.append(str);
+ }
+ return stringBuilder.toString();
+ }
+
+}
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyTest.java
index a4f81b648..2577b3f0c 100644
--- a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyTest.java
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyTest.java
@@ -3,15 +3,8 @@ package pro.taskana;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
import java.io.File;
import java.util.ArrayList;
-import java.util.Collections;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.RunAsClient;
import org.jboss.arquillian.junit.Arquillian;
@@ -24,15 +17,10 @@ import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.hateoas.MediaTypes;
-import org.springframework.hateoas.mediatype.hal.Jackson2HalModule;
import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
-import org.springframework.web.client.RestTemplate;
import pro.taskana.common.rest.models.AccessIdRepresentationModel;
import pro.taskana.common.rest.models.TaskanaUserInfoRepresentationModel;
@@ -43,12 +31,10 @@ import pro.taskana.task.rest.models.TaskRepresentationModel;
* to change data source configuration at project-defaults.yml.
*/
@RunWith(Arquillian.class)
-public class TaskanaWildflyTest {
+public class TaskanaWildflyTest extends AbstractAccTest {
private static final Logger LOGGER = LoggerFactory.getLogger(TaskanaWildflyTest.class);
- public static final String AUTHORIZATION_TEAMLEAD_1 = "Basic dGVhbWxlYWQtMTp0ZWFtbGVhZC0x";
-
@Deployment(testable = false)
public static Archive> createTestArchive() {
@@ -128,38 +114,6 @@ public class TaskanaWildflyTest {
assertThat(response.getBody()).isNotNull();
}
- /**
- * Return a REST template which is capable of dealing with responses in HAL format.
- *
- * @return RestTemplate
- */
- private static RestTemplate getRestTemplate() {
- ObjectMapper mapper = new ObjectMapper();
- mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
- mapper.registerModule(new Jackson2HalModule());
- mapper
- .registerModule(new ParameterNamesModule())
- .registerModule(new Jdk8Module())
- .registerModule(new JavaTimeModule());
-
- MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
- converter.setSupportedMediaTypes(Collections.singletonList(MediaTypes.HAL_JSON));
- converter.setObjectMapper(mapper);
-
- RestTemplate template = new RestTemplate();
- // important to add first to ensure priority
- template.getMessageConverters().add(0, converter);
- return template;
- }
-
- private HttpHeaders getHeadersTeamlead_1() {
- HttpHeaders headers = new HttpHeaders();
- headers.add("Authorization", AUTHORIZATION_TEAMLEAD_1);
- headers.add("Content-Type", "application/json");
- return headers;
- }
-
static class AccessIdListResource extends ArrayList {
private static final long serialVersionUID = 1L;
}
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyWithHistoryLoggerEnabled.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyWithHistoryLoggerEnabled.java
new file mode 100644
index 000000000..f8c7074ed
--- /dev/null
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyWithHistoryLoggerEnabled.java
@@ -0,0 +1,84 @@
+package pro.taskana;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.File;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.RunAsClient;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
+import org.jboss.shrinkwrap.resolver.api.maven.PackagingType;
+import org.jboss.shrinkwrap.resolver.api.maven.ScopeType;
+import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenCoordinate;
+import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenCoordinates;
+import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependency;
+import org.jboss.shrinkwrap.resolver.impl.maven.coordinate.MavenDependencyImpl;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This test class is configured to run with postgres DB if you want to run it with h2 it is needed.
+ * to change data source configuration at project-defaults.yml.
+ */
+@RunWith(Arquillian.class)
+public class TaskanaWildflyWithHistoryLoggerEnabled extends AbstractAccTest {
+
+ private static final Logger LOGGER =
+ LoggerFactory.getLogger(TaskanaWildflyWithHistoryLoggerEnabled.class);
+
+ @Deployment(testable = false)
+ public static Archive> createTestArchive() {
+
+ String applicationPropertyFile = "application.properties";
+ String dbType = System.getProperty("db.type");
+ if (dbType != null && !dbType.isEmpty()) {
+ applicationPropertyFile = "application-" + dbType + ".properties";
+ }
+
+ LOGGER.info(
+ "Running with db.type '{}' and using property file '{}'", dbType, applicationPropertyFile);
+
+ MavenCoordinate historyLoggerCoordinate =
+ MavenCoordinates.createCoordinate(
+ "pro.taskana.simplehistory",
+ "taskana-loghistory-provider",
+ DEPENDENCY_VERSION,
+ PackagingType.JAR,
+ null);
+
+ MavenDependency historyLoggerDependency =
+ new MavenDependencyImpl(historyLoggerCoordinate, ScopeType.TEST, false);
+
+ File[] files =
+ Maven.resolver()
+ .loadPomFromFile("pom.xml")
+ .importRuntimeDependencies()
+ .addDependency(historyLoggerDependency)
+ .resolve()
+ .withTransitivity()
+ .asFile();
+
+ return ShrinkWrap.create(WebArchive.class, "taskana.war")
+ .addPackages(true, "pro.taskana")
+ .addAsResource("taskana.properties")
+ .addAsResource(applicationPropertyFile, "application.properties")
+ .addAsResource("taskana-test.ldif")
+ .addAsWebInfResource("int-test-web.xml", "web.xml")
+ .addAsWebInfResource("int-test-jboss-web.xml", "jboss-web.xml")
+ .addAsLibraries(files);
+ }
+
+ @Test
+ @RunAsClient
+ public void should_WriteHistoryEventIntoDatabase_And_LogEventToFile() throws Exception {
+
+ String log = parseServerLog();
+
+ assertThat(log).contains("AUDIT");
+ }
+}
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabled.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabled.java
new file mode 100644
index 000000000..7fafc31ea
--- /dev/null
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabled.java
@@ -0,0 +1,118 @@
+package pro.taskana;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.File;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.RunAsClient;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
+import org.jboss.shrinkwrap.resolver.api.maven.PackagingType;
+import org.jboss.shrinkwrap.resolver.api.maven.ScopeType;
+import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenCoordinate;
+import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenCoordinates;
+import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependency;
+import org.jboss.shrinkwrap.resolver.impl.maven.coordinate.MavenDependencyImpl;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.hateoas.IanaLinkRelations;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+import pro.taskana.simplehistory.rest.models.TaskHistoryEventListResource;
+import pro.taskana.task.rest.models.TaskRepresentationModel;
+
+/**
+ * This test class is configured to run with postgres DB if you want to run it with h2 it is needed.
+ * to change data source configuration at project-defaults.yml.
+ */
+@RunWith(Arquillian.class)
+public class TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabled extends AbstractAccTest {
+
+ private static final Logger LOGGER =
+ LoggerFactory.getLogger(TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabled.class);
+
+ @Deployment(testable = false)
+ public static Archive> createTestArchive() {
+
+ String applicationPropertyFile = "application.properties";
+ String dbType = System.getProperty("db.type");
+ if (dbType != null && !dbType.isEmpty()) {
+ applicationPropertyFile = "application-" + dbType + ".properties";
+ }
+
+ LOGGER.info(
+ "Running with db.type '{}' and using property file '{}'", dbType, applicationPropertyFile);
+
+ MavenCoordinate simpleHistoryCoordinate =
+ MavenCoordinates.createCoordinate(
+ "pro.taskana.simplehistory",
+ "taskana-simplehistory-rest-spring",
+ DEPENDENCY_VERSION,
+ PackagingType.JAR,
+ null);
+
+ MavenDependency simpleHistoryDependency =
+ new MavenDependencyImpl(simpleHistoryCoordinate, ScopeType.TEST, false);
+
+ MavenCoordinate historyLoggerCoordinate =
+ MavenCoordinates.createCoordinate(
+ "pro.taskana.simplehistory",
+ "taskana-loghistory-provider",
+ DEPENDENCY_VERSION,
+ PackagingType.JAR,
+ null);
+
+ MavenDependency historyLoggerDependency =
+ new MavenDependencyImpl(historyLoggerCoordinate, ScopeType.TEST, false);
+
+ File[] files =
+ Maven.resolver()
+ .loadPomFromFile("pom.xml")
+ .importRuntimeDependencies()
+ .addDependency(simpleHistoryDependency)
+ .addDependency(historyLoggerDependency)
+ .resolve()
+ .withTransitivity()
+ .asFile();
+
+ return ShrinkWrap.create(WebArchive.class, "taskana.war")
+ .addPackages(true, "pro.taskana")
+ .addAsResource("taskana.properties")
+ .addAsResource(applicationPropertyFile, "application.properties")
+ .addAsResource("taskana-test.ldif")
+ .addAsWebInfResource("int-test-web.xml", "web.xml")
+ .addAsWebInfResource("int-test-jboss-web.xml", "jboss-web.xml")
+ .addAsLibraries(files);
+ }
+
+ @Test
+ @RunAsClient
+ public void should_WriteHistoryEventIntoDatabase_And_LogEventToFile() throws Exception {
+
+ ResponseEntity getHistoryEventsResponse =
+ performGetHistoryEventsRestCall();
+ assertThat(getHistoryEventsResponse.getBody()).isNotNull();
+ assertThat(getHistoryEventsResponse.getBody().getLink(IanaLinkRelations.SELF)).isNotNull();
+ assertThat(getHistoryEventsResponse.getBody().getContent()).hasSize(0);
+
+ ResponseEntity responseCreateTask = performCreateTaskRestCall();
+ assertThat(HttpStatus.CREATED).isEqualTo(responseCreateTask.getStatusCode());
+ assertThat(responseCreateTask.getBody()).isNotNull();
+
+ getHistoryEventsResponse = performGetHistoryEventsRestCall();
+
+ assertThat(getHistoryEventsResponse.getBody()).isNotNull();
+ assertThat(getHistoryEventsResponse.getBody().getLink(IanaLinkRelations.SELF)).isNotNull();
+ assertThat(getHistoryEventsResponse.getBody().getContent()).hasSize(1);
+
+ String log = parseServerLog();
+
+ assertThat(log).contains("AUDIT");
+ }
+}
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyWithSimpleHistoryEnabled.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyWithSimpleHistoryEnabled.java
new file mode 100644
index 000000000..e139fd9a5
--- /dev/null
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/TaskanaWildflyWithSimpleHistoryEnabled.java
@@ -0,0 +1,103 @@
+package pro.taskana;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.File;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.RunAsClient;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
+import org.jboss.shrinkwrap.resolver.api.maven.PackagingType;
+import org.jboss.shrinkwrap.resolver.api.maven.ScopeType;
+import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenCoordinate;
+import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenCoordinates;
+import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependency;
+import org.jboss.shrinkwrap.resolver.impl.maven.coordinate.MavenDependencyImpl;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.hateoas.IanaLinkRelations;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+import pro.taskana.simplehistory.rest.models.TaskHistoryEventListResource;
+import pro.taskana.task.rest.models.TaskRepresentationModel;
+
+/**
+ * This test class is configured to run with postgres DB if you want to run it with h2 it is needed.
+ * to change data source configuration at project-defaults.yml.
+ */
+@RunWith(Arquillian.class)
+public class TaskanaWildflyWithSimpleHistoryEnabled extends AbstractAccTest {
+
+ private static final Logger LOGGER =
+ LoggerFactory.getLogger(TaskanaWildflyWithSimpleHistoryEnabled.class);
+
+ @Deployment(testable = false)
+ public static Archive> createTestArchive() {
+
+ String applicationPropertyFile = "application.properties";
+ String dbType = System.getProperty("db.type");
+ if (dbType != null && !dbType.isEmpty()) {
+ applicationPropertyFile = "application-" + dbType + ".properties";
+ }
+
+ LOGGER.info(
+ "Running with db.type '{}' and using property file '{}'", dbType, applicationPropertyFile);
+
+ MavenCoordinate simpleHistoryCoordinate =
+ MavenCoordinates.createCoordinate(
+ "pro.taskana.simplehistory",
+ "taskana-simplehistory-rest-spring",
+ DEPENDENCY_VERSION,
+ PackagingType.JAR,
+ null);
+
+ MavenDependency simpleHistoryDependency =
+ new MavenDependencyImpl(simpleHistoryCoordinate, ScopeType.TEST, false);
+
+ File[] files =
+ Maven.resolver()
+ .loadPomFromFile("pom.xml")
+ .importRuntimeDependencies()
+ .addDependency(simpleHistoryDependency)
+ .resolve()
+ .withTransitivity()
+ .asFile();
+
+ return ShrinkWrap.create(WebArchive.class, "taskana.war")
+ .addPackages(true, "pro.taskana")
+ .addAsResource("taskana.properties")
+ .addAsResource(applicationPropertyFile, "application.properties")
+ .addAsResource("taskana-test.ldif")
+ .addAsWebInfResource("int-test-web.xml", "web.xml")
+ .addAsWebInfResource("int-test-jboss-web.xml", "jboss-web.xml")
+ .addAsLibraries(files);
+ }
+
+ @Test
+ @RunAsClient
+ public void should_WriteHistoryEventIntoDatabase() {
+
+ ResponseEntity getHistoryEventsResponse =
+ performGetHistoryEventsRestCall();
+ assertThat(getHistoryEventsResponse.getBody()).isNotNull();
+ assertThat(getHistoryEventsResponse.getBody().getLink(IanaLinkRelations.SELF)).isNotNull();
+ assertThat(getHistoryEventsResponse.getBody().getContent()).hasSize(0);
+
+ ResponseEntity responseCreateTask = performCreateTaskRestCall();
+ assertThat(HttpStatus.CREATED).isEqualTo(responseCreateTask.getStatusCode());
+ assertThat(responseCreateTask.getBody()).isNotNull();
+
+ getHistoryEventsResponse = performGetHistoryEventsRestCall();
+
+ assertThat(getHistoryEventsResponse.getBody()).isNotNull();
+ assertThat(getHistoryEventsResponse.getBody().getLink(IanaLinkRelations.SELF)).isNotNull();
+ assertThat(getHistoryEventsResponse.getBody().getContent()).hasSize(1);
+ }
+
+}
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/resources/taskana.properties b/rest/taskana-rest-spring-example-wildfly/src/test/resources/taskana.properties
index a96fecaf1..60973f58a 100644
--- a/rest/taskana-rest-spring-example-wildfly/src/test/resources/taskana.properties
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/resources/taskana.properties
@@ -15,3 +15,4 @@ taskana.jobs.cleanup.runEvery=P1D
taskana.jobs.cleanup.firstRunAt=2018-07-25T08:00:00Z
taskana.jobs.cleanup.minimumAge=P14D
taskana.german.holidays.enabled=true
+taskana.historylogger.name=AUDIT