TSK-1831: automatically handle postgres db when executing wildfly tests

Co-authored-by: Yakup Ensar Evli <54323073+ensarevlideveloper@users.noreply.github.com>
Co-authored-by: ryzheboka <25465835+ryzheboka@users.noreply.github.com>
Co-authored-by: knht <43456808+knht@users.noreply.github.com>
This commit is contained in:
Mustapha Zorgati 2022-04-21 17:31:17 +02:00
parent fc1d1e192c
commit 01341379d4
3 changed files with 63 additions and 7 deletions

View File

@ -117,8 +117,8 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>

View File

@ -22,6 +22,13 @@ import pro.taskana.workbasket.rest.models.WorkbasketSummaryRepresentationModel;
public class AbstractAccTest {
protected static final String DEPENDENCY_VERSION = "5.1.1-SNAPSHOT";
static {
Runtime.getRuntime().addShutdownHook(new Thread(AbstractAccTest::stopPostgresDb));
startPostgresDb();
}
protected RestHelper restHelper = new RestHelper(8080);
protected TaskRepresentationModel getTaskResourceSample() {
@ -51,7 +58,7 @@ public class AbstractAccTest {
return RestHelper.TEMPLATE.exchange(
restHelper.toUrl("/taskana" + HistoryRestEndpoints.URL_HISTORY_EVENTS),
HttpMethod.GET,
new HttpEntity<>(restHelper.generateHeadersForUser("teamlead-1")),
new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1")),
ParameterizedTypeReference.forType(TaskHistoryEventPagedRepresentationModel.class));
}
@ -60,7 +67,7 @@ public class AbstractAccTest {
return RestHelper.TEMPLATE.exchange(
restHelper.toUrl("/taskana" + RestEndpoints.URL_TASKS),
HttpMethod.POST,
new HttpEntity<>(taskRepresentationModel, restHelper.generateHeadersForUser("teamlead-1")),
new HttpEntity<>(taskRepresentationModel, RestHelper.generateHeadersForUser("teamlead-1")),
ParameterizedTypeReference.forType(TaskRepresentationModel.class));
}
@ -78,4 +85,52 @@ public class AbstractAccTest {
}
return stringBuilder.toString();
}
private static void stopPostgresDb() {
try {
boolean isWindows = System.getProperty("os.name").toLowerCase().startsWith("windows");
ProcessBuilder builder = new ProcessBuilder();
if (isWindows) {
builder.command(
"cmd.exe", "/c", "docker-compose -f ../../docker-databases/docker-compose.yml down -v");
} else {
builder.command(
"sh", "-c", "docker-compose -f ../../docker-databases/docker-compose.yml down -v");
}
Process process = builder.start();
int exitCode = process.waitFor();
if (exitCode != 0) {
throw new RuntimeException("could not start postgres db!");
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private static void startPostgresDb() {
try {
boolean isWindows = System.getProperty("os.name").toLowerCase().startsWith("windows");
ProcessBuilder builder = new ProcessBuilder();
if (isWindows) {
builder.command(
"cmd.exe",
"/c",
"docker-compose -f ../../docker-databases/docker-compose.yml up -d",
"taskana-postgres_10");
} else {
builder.command(
"sh",
"-c",
"docker-compose -f ../../docker-databases/docker-compose.yml up -d",
"taskana-postgres_10");
}
Process process = builder.start();
int exitCode = process.waitFor();
if (exitCode != 0) {
throw new RuntimeException("could not start postgres db!");
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

View File

@ -25,6 +25,7 @@ import org.springframework.http.ResponseEntity;
import pro.taskana.common.rest.RestEndpoints;
import pro.taskana.common.rest.models.AccessIdRepresentationModel;
import pro.taskana.common.rest.models.TaskanaUserInfoRepresentationModel;
import pro.taskana.common.test.rest.RestHelper;
import pro.taskana.task.rest.models.TaskRepresentationModel;
/**
@ -73,7 +74,7 @@ public class TaskanaWildflyTest extends AbstractAccTest {
TEMPLATE.exchange(
restHelper.toUrl("/taskana" + RestEndpoints.URL_CURRENT_USER),
HttpMethod.GET,
new HttpEntity<>(restHelper.generateHeadersForUser("teamlead-1")),
new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1")),
ParameterizedTypeReference.forType(TaskanaUserInfoRepresentationModel.class));
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
TaskanaUserInfoRepresentationModel currentUser = response.getBody();
@ -90,7 +91,7 @@ public class TaskanaWildflyTest extends AbstractAccTest {
TEMPLATE.exchange(
restHelper.toUrl("/taskana" + RestEndpoints.URL_ACCESS_ID + "?search-for=rig"),
HttpMethod.GET,
new HttpEntity<>(restHelper.generateHeadersForUser("teamlead-1")),
new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1")),
new ParameterizedTypeReference<List<AccessIdRepresentationModel>>() {});
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(response.getBody()).hasSize(2);
@ -105,7 +106,7 @@ public class TaskanaWildflyTest extends AbstractAccTest {
"/taskana" + RestEndpoints.URL_TASKS_ID,
"TKI:000000000000000000000000000000000001"),
HttpMethod.GET,
new HttpEntity<>(restHelper.generateHeadersForUser("teamlead-1")),
new HttpEntity<>(RestHelper.generateHeadersForUser("teamlead-1")),
ParameterizedTypeReference.forType(TaskRepresentationModel.class));
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(response.getBody()).isNotNull();