Skip to content
Snippets Groups Projects
Commit 25562a8a authored by OZGCloud's avatar OZGCloud
Browse files

OZG-4696 adjust tests to async execution

parent c4e8335d
No related branches found
No related tags found
No related merge requests found
Showing with 105 additions and 58 deletions
......@@ -325,6 +325,11 @@
<artifactId>docker-java-api</artifactId>
<version>${docker-java.version}</version>
</dependency>
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<scope>test</scope>
</dependency>
<!-- mongock -->
<dependency>
......
......@@ -24,6 +24,7 @@
package de.ozgcloud.nachrichten.postfach;
import static org.assertj.core.api.Assertions.*;
import static org.awaitility.Awaitility.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import static org.springframework.test.web.client.match.MockRestRequestMatchers.*;
......@@ -31,7 +32,9 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat
import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
......@@ -139,9 +142,9 @@ class PostfachMailITCase {
mockServerSendSuccess();
callGrpcEndpoint();
var mails = callGrpcListEndpoint();
var mails = await().atMost(5, TimeUnit.SECONDS)
.until(PostfachMailITCase.this::callGrpcListEndpoint, PostfachMailITCase.this::hasAtLeastOneElement);
assertThat(mails).hasSize(1);
assertThat(mails.get(0).getCreatedAt()).isNotNull();
assertThat(mails.get(0).getDirection()).isEqualTo(GrpcDirection.OUT);
assertThat(mails.get(0).getSentAt()).isNotNull();
......@@ -153,17 +156,24 @@ class PostfachMailITCase {
@Nested
class TestSendingFailed {
@BeforeEach
void init() {
mongoOperations.dropCollection(VorgangAttachedItem.COLLECTION_NAME);
}
@Test
void shouldMarkFailed() {
mockServerSendFailed();
callGrpcEndpoint();
var mails = callGrpcListEndpoint();
assertThat(mails).hasSize(1);
assertThat(mails.get(0).getSentAt()).isNotNull();
assertThat(ZonedDateTime.parse(mails.get(0).getSentAt())).isCloseTo(ZonedDateTime.now(), within(2, ChronoUnit.SECONDS));
assertThat(mails.get(0).getSentSuccessful()).isFalse();
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
assertThat(callGrpcListEndpoint()).hasSize(1).first().satisfies(mail -> {
assertThat(mail.getSentAt()).isNotNull();
assertThat(ZonedDateTime.parse(mail.getSentAt())).isCloseTo(ZonedDateTime.now(), within(2, ChronoUnit.SECONDS));
assertThat(mail.getSentSuccessful()).isFalse();
});
});
}
@Test
......@@ -172,13 +182,14 @@ class PostfachMailITCase {
mockServerSendSuccess();
callGrpcEndpoint();
var mails = callGrpcListEndpoint();
var mails = await().atMost(5, TimeUnit.SECONDS)
.until(PostfachMailITCase.this::callGrpcListEndpoint, PostfachMailITCase.this::hasAtLeastOneElement);
var mailId = mails.get(0).getId();
callResendGrpcEndpoint(mailId);
mails = callGrpcListEndpoint();
assertThat(mails.get(0).getSentSuccessful()).isTrue();
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() ->
assertThat(callGrpcListEndpoint()).hasSize(1).first().extracting(GrpcPostfachMail::getSentSuccessful).isEqualTo(true)
);
}
@Test
......@@ -187,7 +198,8 @@ class PostfachMailITCase {
mockServerSendFailed();
callGrpcEndpoint();
var mails = callGrpcListEndpoint();
var mails = await().atMost(5, TimeUnit.SECONDS)
.until(PostfachMailITCase.this::callGrpcListEndpoint, PostfachMailITCase.this::hasAtLeastOneElement);
var mailId = mails.get(0).getId();
callResendGrpcEndpoint(mailId);
......@@ -301,4 +313,7 @@ class PostfachMailITCase {
return responseCaptor.getValue().getMailsList();
}
private boolean hasAtLeastOneElement(Collection<GrpcPostfachMail> mails) {
return !mails.isEmpty();
}
}
package de.ozgcloud.processor;
import static org.assertj.core.api.Assertions.*;
import static org.awaitility.Awaitility.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.time.ZonedDateTime;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
......@@ -83,8 +85,10 @@ class ProcessorITCase {
void triggerProcessorOnNewVorgang() {
publisher.publishEvent(new VorgangCreatedEvent(VorgangTestFactory.ID));
verify(processorVorgangService, timeout(2000)).getVorgang(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
verify(processorVorgangService).getVorgang(any());
verify(commandService).createCommand(requestCaptor.capture());
});
var request = requestCaptor.getValue();
@SuppressWarnings("unchecked")
......
......@@ -23,10 +23,12 @@
*/
package de.ozgcloud.vorgang.attached_item;
import static org.awaitility.Awaitility.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
......@@ -70,7 +72,7 @@ class VorgangAttachedItemEventListenerITCase {
publisher.publishEvent(event);
verify(listener).createItem(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(listener).createItem(any()));
}
}
......@@ -84,7 +86,7 @@ class VorgangAttachedItemEventListenerITCase {
publisher.publishEvent(event);
verify(listener).updateItem(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(listener).updateItem(any()));
}
}
......@@ -100,7 +102,7 @@ class VorgangAttachedItemEventListenerITCase {
publisher.publishEvent(event);
verify(listener).patchItem(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(listener).patchItem(any()));
}
}
......@@ -114,7 +116,7 @@ class VorgangAttachedItemEventListenerITCase {
publisher.publishEvent(event);
verify(listener).deleteItem(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(listener).deleteItem(any()));
}
}
......@@ -125,7 +127,7 @@ class VorgangAttachedItemEventListenerITCase {
void shouldCallListener() {
publisher.publishEvent(VorgangDeletedEventTestFactory.create());
verify(listener).onVorgangDeleted(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(listener).onVorgangDeleted(any()));
}
}
......@@ -139,7 +141,8 @@ class VorgangAttachedItemEventListenerITCase {
publisher.publishEvent(event);
verify(service).unmarkAsDeleteByIdAndVersion(CommandTestFactory.RELATION_ID, CommandTestFactory.RELATION_VERSION);
await().atMost(5, TimeUnit.SECONDS).untilAsserted(
() -> verify(service).unmarkAsDeleteByIdAndVersion(CommandTestFactory.RELATION_ID, CommandTestFactory.RELATION_VERSION));
}
}
......
......@@ -24,11 +24,13 @@
package de.ozgcloud.vorgang.attached_item;
import static org.assertj.core.api.Assertions.*;
import static org.awaitility.Awaitility.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.util.HashMap;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
......@@ -88,13 +90,15 @@ class VorgangAttachedItemITCase {
@Test
void shouldPersistInDatabase() {
publisher.publishEvent(event);
var loaded = mongoOperations.findAll(VorgangAttachedItem.class);
assertThat(loaded).hasSize(1);
assertThat(loaded.get(0)).usingRecursiveComparison().ignoringFields("id", "version").isEqualTo(VorgangAttachedItemTestFactory.create());
assertThat(loaded.get(0).getId()).isNotNull();
assertThat(loaded.get(0).getVersion()).isEqualTo(1L);
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
var loadedItems = mongoOperations.findAll(VorgangAttachedItem.class);
assertThat(loadedItems).hasSize(1).first().satisfies(item -> {
assertThat(item).usingRecursiveComparison().ignoringFields("id", "version").isEqualTo(VorgangAttachedItemTestFactory.create());
assertThat(item.getId()).isNotNull();
assertThat(item.getVersion()).isEqualTo(1L);
});
});
}
}
......@@ -132,11 +136,14 @@ class VorgangAttachedItemITCase {
void shouldIncrementVersion() {
publisher.publishEvent(event);
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
var loaded = mongoOperations.findAll(VorgangAttachedItem.class);
assertThat(loaded).hasSize(1);
assertThat(loaded.get(0)).usingRecursiveComparison().ignoringFields("id", "version").isEqualTo(VorgangAttachedItemTestFactory.create());
assertThat(loaded.get(0).getVersion()).isEqualTo(2L);
assertThat(loaded).hasSize(1).first().satisfies(item -> {
assertThat(item).usingRecursiveComparison().ignoringFields("id", "version").isEqualTo(VorgangAttachedItemTestFactory.create());
assertThat(item.getVersion()).isEqualTo(2L);
});
});
}
}
......
package de.ozgcloud.vorgang.status;
import static org.awaitility.Awaitility.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
......@@ -54,56 +56,56 @@ class StatusEventListenerITCase {
void shouldCreateStatusChangeEventForVorgangAnnehmen() {
publishCommandCreatedEvent(Order.VORGANG_ANNEHMEN);
verify(statusService).annehmen(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(statusService).annehmen(any()));
}
@Test
void shouldCreateStatusChangeEventForVorgangAbschliessen() {
publishCommandCreatedEvent(Order.VORGANG_ABSCHLIESSEN);
verify(statusService).abschliessen(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(statusService).abschliessen(any()));
}
@Test
void shouldCreateStatusChangeEventForVorgangBearbeiten() {
publishCommandCreatedEvent(Order.VORGANG_BEARBEITEN);
verify(statusService).bearbeiten(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(statusService).bearbeiten(any()));
}
@Test
void shouldCreateStatusChangeEventForVorgangBescheiden() {
publishCommandCreatedEvent(Order.VORGANG_BESCHEIDEN);
verify(statusService).bescheiden(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(statusService).bescheiden(any()));
}
@Test
void shouldCreateStatusChangeEventForVorgangVerwerfen() {
publishCommandCreatedEvent(Order.VORGANG_VERWERFEN);
verify(statusService).verwerfen(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(statusService).verwerfen(any()));
}
@Test
void shouldCreateStatusChangeEventForVorgangWiedereroeffnen() {
publishCommandCreatedEvent(Order.VORGANG_WIEDEREROEFFNEN);
verify(statusService).wiedereroeffnen(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(statusService).wiedereroeffnen(any()));
}
@Test
void shouldCreateStatusChangeEventForVorgangZurueckholen() {
publishCommandCreatedEvent(Order.VORGANG_ZURUECKHOLEN);
verify(statusService).setStatusNeu(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(statusService).setStatusNeu(any()));
}
@Test
void shouldCreateStatusChangeEventForVorgangZurueckstellen() {
publishCommandCreatedEvent(Order.VORGANG_ZURUECKSTELLEN);
verify(statusService).annehmen(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(statusService).annehmen(any()));
}
@Nested
......@@ -112,7 +114,7 @@ class StatusEventListenerITCase {
void shouldCallService() {
publishCommandCreatedEvent(Order.VORGANG_ZUM_LOESCHEN_MARKIEREN);
verify(statusService).zumLoeschenMarkieren(any());
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(statusService).zumLoeschenMarkieren(any()));
}
}
......@@ -149,7 +151,7 @@ class StatusEventListenerITCase {
publisher.publishEvent(new RevokeCommandEvent(command));
verify(statusService).revokeStatusChange(any(PersistedCommand.class));
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(statusService).revokeStatusChange(any(PersistedCommand.class)));
}
}
}
......@@ -24,10 +24,12 @@
package de.ozgcloud.vorgang.vorgang.redirect;
import static org.assertj.core.api.Assertions.*;
import static org.awaitility.Awaitility.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.bson.types.ObjectId;
......@@ -138,10 +140,10 @@ class ForwardVorgangITCase {
void shouldHaveCommandWithFINISHEDState() {
callServiceCreateCommand();
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
var commands = mongoOperations.findAll(Command.class);
assertThat(commands).hasSize(1);
var redirectCommand = commands.get(0);
assertThat(redirectCommand.getStatus()).isEqualTo(CommandStatus.FINISHED);
assertThat(commands).hasSize(1).first().extracting(Command::getStatus).isEqualTo(CommandStatus.FINISHED);
});
}
// TODO Forwarding status
......@@ -162,28 +164,34 @@ class ForwardVorgangITCase {
void forwardCommandShouldBeWithError() {
callServiceCreateCommand();
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
var commands = mongoOperations.findAll(PersistedCommand.class);
assertThat(commands).hasSize(1);
var redirectCommand = commands.get(0);
assertThat(commands).hasSize(1).first().satisfies(redirectCommand -> {
assertThat(redirectCommand.getStatus()).isEqualTo(CommandStatus.ERROR);
assertThat(redirectCommand.getErrorMessage()).isEqualTo(MailSendErrorEventTestFactory.ERROR_MSG);
});
});
}
@Test
void vorgangShouldHaveStatusIN_BEARBEITUNG() {
callServiceCreateCommand();
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
var loaded = mongoOperations.findById(VorgangTestFactory.ID, Vorgang.class);
assertThat(loaded.getStatus()).isEqualTo(Status.IN_BEARBEITUNG);
});
}
@Test
void forwardingShouldHaveStatusSEND_ERROR() {
callServiceCreateCommand();
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
var vorgang = mongoOperations.findById(VorgangTestFactory.ID, Vorgang.class);
assertThat(vorgang.getForwardings()).hasSize(1);
assertThat(vorgang.getForwardings().get(0).getStatus()).isEqualTo(Forwarding.Status.SEND_ERROR);
});
}
}
......
......@@ -23,9 +23,12 @@
*/
package de.ozgcloud.vorgang.vorgang.redirect;
import static org.awaitility.Awaitility.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
......@@ -66,7 +69,7 @@ class ForwardingEventListenerITCase {
publisher.publishEvent(CommandCreatedEventTestFactory.create(command));
verify(service).forwardByCommand(command);
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(service).forwardByCommand(command));
}
}
......@@ -79,7 +82,7 @@ class ForwardingEventListenerITCase {
publisher.publishEvent(MailSentEventTestFactory.create(forwarding));
verify(service).onRedirectMailSent(forwarding);
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(service).onRedirectMailSent(forwarding));
}
@ParameterizedTest
......@@ -102,7 +105,7 @@ class ForwardingEventListenerITCase {
publisher.publishEvent(CommandCreatedEventTestFactory.create(command));
verify(service).markAsSuccessfull(command);
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> verify(service).markAsSuccessfull(command));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment