From df3678e097cf688d331de7830c79ff39104d66b4 Mon Sep 17 00:00:00 2001 From: Daniel Hillwig Date: Mon, 20 Sep 2021 16:19:43 +0200 Subject: [PATCH] feat: tests --- src/main/resources/liquibase.properties | 3 - .../service/UserStatisticsServiceTest.java | 45 +++++++++ .../AssignSessionListenerTest.java | 81 ++++++++++++++++ .../CreateMessageListenerTest.java | 94 +++++++++++++++++++ .../api/testhelper/PathConstants.java | 2 + .../api/testhelper/TestConstants.java | 12 +++ 6 files changed, 234 insertions(+), 3 deletions(-) delete mode 100644 src/main/resources/liquibase.properties create mode 100644 src/test/java/de/caritas/cob/statisticsservice/api/service/UserStatisticsServiceTest.java create mode 100644 src/test/java/de/caritas/cob/statisticsservice/api/statistics/events/assignsession/AssignSessionListenerTest.java create mode 100644 src/test/java/de/caritas/cob/statisticsservice/api/statistics/events/createmessage/CreateMessageListenerTest.java create mode 100644 src/test/java/de/caritas/cob/statisticsservice/api/testhelper/TestConstants.java diff --git a/src/main/resources/liquibase.properties b/src/main/resources/liquibase.properties deleted file mode 100644 index e194d31..0000000 --- a/src/main/resources/liquibase.properties +++ /dev/null @@ -1,3 +0,0 @@ -changeLogFile: dbchangelog.xml -driver=liquibase.ext.mongodb.database.MongoClientDriver -url=mongodb://diakonie.local:27017/statistics diff --git a/src/test/java/de/caritas/cob/statisticsservice/api/service/UserStatisticsServiceTest.java b/src/test/java/de/caritas/cob/statisticsservice/api/service/UserStatisticsServiceTest.java new file mode 100644 index 0000000..f86f410 --- /dev/null +++ b/src/test/java/de/caritas/cob/statisticsservice/api/service/UserStatisticsServiceTest.java @@ -0,0 +1,45 @@ +package de.caritas.cob.statisticsservice.api.service; + + +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.RC_GROUP_ID; +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.SESSION_ID; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import de.caritas.cob.statisticsservice.api.service.securityheader.SecurityHeaderSupplier; +import de.caritas.cob.statisticsservice.userstatisticsservice.generated.web.UserStatisticsControllerApi; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.http.HttpHeaders; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +public class UserStatisticsServiceTest { + + @InjectMocks + UserStatisticsService userStatisticsService; + @Mock + UserStatisticsControllerApi userStatisticsControllerApi; + @Mock + SecurityHeaderSupplier securityHeaderSupplier; + + @Test + public void retrieveSessionViaRcGroupId_Should_RetrieveSessionViaUserStatisticsControllerApi() { + + when(securityHeaderSupplier.getCsrfHttpHeaders()).thenReturn(new HttpHeaders()); + userStatisticsService.retrieveSessionViaRcGroupId(RC_GROUP_ID); + verify(userStatisticsControllerApi, times(1)).getSession(null, RC_GROUP_ID); + } + + @Test + public void retrieveSessionViaSessionId_Should_RetrieveSessionViaUserStatisticsControllerApi() { + + when(securityHeaderSupplier.getCsrfHttpHeaders()).thenReturn(new HttpHeaders()); + userStatisticsService.retrieveSessionViaSessionId(SESSION_ID); + verify(userStatisticsControllerApi, times(1)).getSession(SESSION_ID, null); + } + +} diff --git a/src/test/java/de/caritas/cob/statisticsservice/api/statistics/events/assignsession/AssignSessionListenerTest.java b/src/test/java/de/caritas/cob/statisticsservice/api/statistics/events/assignsession/AssignSessionListenerTest.java new file mode 100644 index 0000000..5cc2866 --- /dev/null +++ b/src/test/java/de/caritas/cob/statisticsservice/api/statistics/events/assignsession/AssignSessionListenerTest.java @@ -0,0 +1,81 @@ +package de.caritas.cob.statisticsservice.api.statistics.events.assignsession; + +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.AGENCY_ID; +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.CONSULTANT_ID; +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.CONSULTING_TYPE_ID; +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.RC_GROUP_ID; +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.SESSION_ID; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.nullValue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.isNull; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import de.caritas.cob.statisticsservice.api.model.AssignSessionStatisticsEventMessage; +import de.caritas.cob.statisticsservice.api.model.EventType; +import de.caritas.cob.statisticsservice.api.model.UserRole; +import de.caritas.cob.statisticsservice.api.service.UserStatisticsService; +import de.caritas.cob.statisticsservice.api.statistics.model.StatisticsEvent; +import de.caritas.cob.statisticsservice.userstatisticsservice.generated.web.model.SessionStatisticsResultDTO; +import de.caritas.cob.statisticsservice.config.RabbitMqConfig; +import java.time.OffsetDateTime; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +public class AssignSessionListenerTest { + + @InjectMocks AssignSessionListener assignSessionListener; + @Mock MongoTemplate mongoTemplate; + @Mock UserStatisticsService userStatisticsService; + @Mock RabbitMqConfig rabbitMqConfig; + + @Test + public void receiveMessage_Should_saveEventToMongoDb() { + + SessionStatisticsResultDTO sessionStatisticsResultDTO = buildResultDto(); + when(userStatisticsService.retrieveSessionViaSessionId(SESSION_ID)) + .thenReturn(sessionStatisticsResultDTO); + + AssignSessionStatisticsEventMessage assignSessionStatisticsEventMessage = buildEventMessage(); + assignSessionListener.receiveMessage(assignSessionStatisticsEventMessage); + verify(mongoTemplate, times(1)).insert(any(StatisticsEvent.class)); + + ArgumentCaptor statisticsEventCaptor = ArgumentCaptor.forClass(StatisticsEvent.class); + verify(mongoTemplate).insert(statisticsEventCaptor.capture()); + StatisticsEvent statisticsEvent = statisticsEventCaptor.getValue(); + assertThat(statisticsEvent.getEventType(), is(assignSessionStatisticsEventMessage.getEventType())); + assertThat(statisticsEvent.getSessionId(), is(sessionStatisticsResultDTO.getId())); + assertThat(statisticsEvent.getConsultingType().getId(), is(sessionStatisticsResultDTO.getConsultingType())); + assertThat(statisticsEvent.getAgency().getId(), is(sessionStatisticsResultDTO.getAgencyId())); + assertThat(statisticsEvent.getTimestamp(), is(assignSessionStatisticsEventMessage.getTimestamp().toInstant())); + assertThat(statisticsEvent.getUser().getId(), is(assignSessionStatisticsEventMessage.getConsultantId())); + assertThat(statisticsEvent.getUser().getUserRole(), is(UserRole.CONSULTANT)); + assertThat(statisticsEvent.getMetaData(), is(nullValue())); + } + + private SessionStatisticsResultDTO buildResultDto() { + return new SessionStatisticsResultDTO() + .id(SESSION_ID) + .isTeamSession(false) + .agencyId(AGENCY_ID) + .consultingType(CONSULTING_TYPE_ID) + .rcGroupId(RC_GROUP_ID); + } + + private AssignSessionStatisticsEventMessage buildEventMessage() { + return new AssignSessionStatisticsEventMessage() + .sessionId(SESSION_ID) + .eventType(EventType.ASSIGN_SESSION) + .consultantId(CONSULTANT_ID) + .timestamp(OffsetDateTime.now()); + } +} diff --git a/src/test/java/de/caritas/cob/statisticsservice/api/statistics/events/createmessage/CreateMessageListenerTest.java b/src/test/java/de/caritas/cob/statisticsservice/api/statistics/events/createmessage/CreateMessageListenerTest.java new file mode 100644 index 0000000..6eec72d --- /dev/null +++ b/src/test/java/de/caritas/cob/statisticsservice/api/statistics/events/createmessage/CreateMessageListenerTest.java @@ -0,0 +1,94 @@ +package de.caritas.cob.statisticsservice.api.statistics.events.createmessage; + +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.AGENCY_ID; +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.CONSULTANT_ID; +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.CONSULTING_TYPE_ID; +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.RC_GROUP_ID; +import static de.caritas.cob.statisticsservice.api.testhelper.TestConstants.SESSION_ID; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import de.caritas.cob.statisticsservice.api.model.CreateMessageStatisticsEventMessage; +import de.caritas.cob.statisticsservice.api.model.EventType; +import de.caritas.cob.statisticsservice.api.model.UserRole; +import de.caritas.cob.statisticsservice.api.service.UserStatisticsService; +import de.caritas.cob.statisticsservice.api.statistics.model.StatisticsEvent; +import de.caritas.cob.statisticsservice.api.statistics.model.meta.CreateMessageMetaData; +import de.caritas.cob.statisticsservice.config.RabbitMqConfig; +import de.caritas.cob.statisticsservice.userstatisticsservice.generated.web.model.SessionStatisticsResultDTO; +import java.time.OffsetDateTime; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +public class CreateMessageListenerTest { + + @InjectMocks + CreateMessageListener createMessageListener; + @Mock + MongoTemplate mongoTemplate; + @Mock + UserStatisticsService userStatisticsService; + @Mock + RabbitMqConfig rabbitMqConfig; + + @Test + public void receiveMessage_Should_saveEventToMongoDb() { + + SessionStatisticsResultDTO sessionStatisticsResultDTO = buildResultDto(); + when(userStatisticsService.retrieveSessionViaRcGroupId(RC_GROUP_ID)) + .thenReturn(sessionStatisticsResultDTO); + + CreateMessageStatisticsEventMessage createMessageStatisticsEventMessage = buildEventMessage(); + createMessageListener.receiveMessage(createMessageStatisticsEventMessage); + verify(mongoTemplate, times(1)).insert(any(StatisticsEvent.class)); + + ArgumentCaptor statisticsEventCaptor = ArgumentCaptor.forClass(StatisticsEvent.class); + verify(mongoTemplate).insert(statisticsEventCaptor.capture()); + StatisticsEvent statisticsEvent = statisticsEventCaptor.getValue(); + assertThat(statisticsEvent.getEventType(), is(createMessageStatisticsEventMessage.getEventType())); + assertThat(statisticsEvent.getSessionId(), is(sessionStatisticsResultDTO.getId())); + assertThat(statisticsEvent.getConsultingType().getId(), is(sessionStatisticsResultDTO.getConsultingType())); + assertThat(statisticsEvent.getAgency().getId(), is(sessionStatisticsResultDTO.getAgencyId())); + assertThat(statisticsEvent.getTimestamp(), is(createMessageStatisticsEventMessage.getTimestamp().toInstant())); + assertThat(statisticsEvent.getUser().getId(), is(createMessageStatisticsEventMessage.getConsultantId())); + assertThat(statisticsEvent.getUser().getUserRole(), is(UserRole.CONSULTANT)); + assertThat(statisticsEvent.getMetaData(), is(buildMetaData(createMessageStatisticsEventMessage))); + } + + private SessionStatisticsResultDTO buildResultDto() { + return new SessionStatisticsResultDTO() + .id(SESSION_ID) + .isTeamSession(false) + .agencyId(AGENCY_ID) + .consultingType(CONSULTING_TYPE_ID) + .rcGroupId(RC_GROUP_ID); + } + + private CreateMessageStatisticsEventMessage buildEventMessage() { + return new CreateMessageStatisticsEventMessage() + .rcGroupId(RC_GROUP_ID) + .eventType(EventType.CREATE_MESSAGE) + .consultantId(CONSULTANT_ID) + .timestamp(OffsetDateTime.now()) + .hasAttachment(true); + } + + private CreateMessageMetaData buildMetaData( + CreateMessageStatisticsEventMessage createMessageStatisticsEventMessage) { + return CreateMessageMetaData + .builder() + .hasAttachment(createMessageStatisticsEventMessage.getHasAttachment()) + .build(); + } + +} diff --git a/src/test/java/de/caritas/cob/statisticsservice/api/testhelper/PathConstants.java b/src/test/java/de/caritas/cob/statisticsservice/api/testhelper/PathConstants.java index ea568f2..a33ccc5 100644 --- a/src/test/java/de/caritas/cob/statisticsservice/api/testhelper/PathConstants.java +++ b/src/test/java/de/caritas/cob/statisticsservice/api/testhelper/PathConstants.java @@ -5,6 +5,8 @@ */ public class PathConstants { + private PathConstants() {} + public static final String ROOT_PATH = "/statistics"; public static final String PATH_GET_CONSULTANT_STATISTICS = ROOT_PATH + "/consultant"; public static final String PATH_GET_CONSULTANT_STATISTICS_CSV = ROOT_PATH + "/consultant"; diff --git a/src/test/java/de/caritas/cob/statisticsservice/api/testhelper/TestConstants.java b/src/test/java/de/caritas/cob/statisticsservice/api/testhelper/TestConstants.java new file mode 100644 index 0000000..a61c609 --- /dev/null +++ b/src/test/java/de/caritas/cob/statisticsservice/api/testhelper/TestConstants.java @@ -0,0 +1,12 @@ +package de.caritas.cob.statisticsservice.api.testhelper; + +public class TestConstants { + + private TestConstants() {} + + public static final String RC_GROUP_ID = "yhT3444kk"; + public static final Long SESSION_ID = 34344L; + public static final String CONSULTANT_ID = "d63f4cc0-215d-40e2-a866-2d3e910f0590"; + public static final Long AGENCY_ID = 23447L; + public static final int CONSULTING_TYPE_ID = 1; +}