diff --git a/src/main/java/de/ozgcloud/xta/test/app/mapper/RequestMapper.java b/src/main/java/de/ozgcloud/xta/test/app/mapper/RequestMapper.java index 2ac1edf7ced8f463d06c8debec95278d5c0f3bce..559a6743882e28f3e5d78227291811f01f60f8d0 100644 --- a/src/main/java/de/ozgcloud/xta/test/app/mapper/RequestMapper.java +++ b/src/main/java/de/ozgcloud/xta/test/app/mapper/RequestMapper.java @@ -15,11 +15,13 @@ import de.ozgcloud.xta.test.app.exception.TechnicalException; import de.ozgcloud.xta.test.app.model.XtaCloseRequest; import de.ozgcloud.xta.test.app.model.XtaFile; import de.ozgcloud.xta.test.app.model.XtaGetMessageRequest; +import de.ozgcloud.xta.test.app.model.XtaLookupServiceRequest; import de.ozgcloud.xta.test.app.model.XtaMessage; import de.ozgcloud.xta.test.app.model.XtaMessageMetaData; import de.ozgcloud.xta.test.app.model.XtaMessageMetaDataListingRequest; import genv3.de.xoev.transport.xta.x211.ContentType; import genv3.de.xoev.transport.xta.x211.GenericContentContainer; +import genv3.de.xoev.transport.xta.x211.LookupServiceRequest; import genv3.eu.osci.ws.x2008.x05.transport.MsgBoxCloseRequestType; import genv3.eu.osci.ws.x2008.x05.transport.MsgBoxFetchRequest; import genv3.eu.osci.ws.x2008.x05.transport.MsgBoxStatusListRequestType; @@ -88,4 +90,9 @@ public interface RequestMapper { @Mapping(target = "messageId", source = "fetchRequest.msgSelector.messageID.first.value") @Mapping(target = "clientIdentifierValue", source = "authorIdentifier.identifier.value") XtaGetMessageRequest mapXtaGetMessageRequest(MsgBoxFetchRequest fetchRequest, PartyType authorIdentifier); + + @Mapping(target = "service", source = "lookupServiceRequest.lookupServiceRequestList.first.lookupService.serviceType") + @Mapping(target = "readerIdentifierValue", source = "lookupServiceRequest.lookupServiceRequestList.first.lookupService.reader.identifier.value") + @Mapping(target = "authorIdentifierValue", source = "authorIdentifier.identifier.value") + XtaLookupServiceRequest mapXtaLookupServiceRequest(LookupServiceRequest lookupServiceRequest, PartyType authorIdentifier); } diff --git a/src/main/java/de/ozgcloud/xta/test/app/mapper/ResponseMapper.java b/src/main/java/de/ozgcloud/xta/test/app/mapper/ResponseMapper.java index a3d46d8282f8de6e965eef81727c106afa119cf5..ec571be78bb5f0ee694f26c85b9da4809af3ed05 100644 --- a/src/main/java/de/ozgcloud/xta/test/app/mapper/ResponseMapper.java +++ b/src/main/java/de/ozgcloud/xta/test/app/mapper/ResponseMapper.java @@ -22,12 +22,15 @@ import org.mapstruct.TargetPropertyName; import de.ozgcloud.xta.test.app.model.Identifier; import de.ozgcloud.xta.test.app.model.XtaFile; +import de.ozgcloud.xta.test.app.model.XtaLookupServiceRequest; import de.ozgcloud.xta.test.app.model.XtaMessage; import de.ozgcloud.xta.test.app.model.XtaMessageMetaData; import de.ozgcloud.xta.test.app.model.XtaMessageMetaDataListing; import de.ozgcloud.xta.test.app.util.XtaIdGenerator; import genv3.de.xoev.transport.xta.x211.ContentType; import genv3.de.xoev.transport.xta.x211.GenericContentContainer; +import genv3.de.xoev.transport.xta.x211.LookupServiceResponse; +import genv3.de.xoev.transport.xta.x211.LookupServiceResultType; import genv3.eu.osci.ws.x2008.x05.transport.MsgBoxResponseType; import genv3.eu.osci.ws.x2008.x05.transport.MsgStatusListType; import genv3.eu.osci.ws.x2014.x10.transport.DeliveryAttributesType; @@ -62,7 +65,7 @@ public interface ResponseMapper { @Mapping(target = "destinations.reader.identifier", source = "readerIdentifier") @Mapping(target = "msgSize", source = "messageSize") @Mapping(target = "testMsg", ignore = true) - @Mapping(target = "deliveryAttributes", expression = "java( defaultDeliveryAttributes() )") + @Mapping(target = "deliveryAttributes", expression = "java( createDefaultDeliveryAttributes(createNowXmlGregorianCalendarFromLocalDateTime()) )") @Mapping(target = "messageProperties", ignore = true) MessageMetaData mapMessageMetaData(XtaMessageMetaData xtaMessageMetaData); @@ -112,21 +115,20 @@ public interface ResponseMapper { return new DataHandler(dataSource); } - default DeliveryAttributesType defaultDeliveryAttributes() { - XMLGregorianCalendar calendarNow = xmlGregorianCalendarFromLocalDateTime(LocalDateTime.now()); - - DeliveryAttributesType deliveryAttributes = new DeliveryAttributesType(); - deliveryAttributes.setDelivery(calendarNow); - deliveryAttributes.setInitialFetch(calendarNow); - deliveryAttributes.setInitialSend(calendarNow); - deliveryAttributes.setOrigin(calendarNow); - - return deliveryAttributes; - } + @Mapping(target = "delivery", source = ".") + @Mapping(target = "initialFetch", source = ".") + @Mapping(target = "initialSend", source = ".") + @Mapping(target = "origin", source = ".") + @Mapping(target = "notBefore", ignore = true) + @Mapping(target = "obsoleteAfter", ignore = true) + @Mapping(target = "reception", ignore = true) + @Mapping(target = "serviceQuality", ignore = true) + @Mapping(target = "receiptRequests", ignore = true) + DeliveryAttributesType createDefaultDeliveryAttributes(XMLGregorianCalendar timestamp); @SneakyThrows - default XMLGregorianCalendar xmlGregorianCalendarFromLocalDateTime(LocalDateTime localDateTime) { - var isoTimeString = DateTimeFormatter.ISO_DATE_TIME.format(localDateTime); + default XMLGregorianCalendar createNowXmlGregorianCalendarFromLocalDateTime() { + var isoTimeString = DateTimeFormatter.ISO_DATE_TIME.format(LocalDateTime.now()); return DatatypeFactory.newInstance().newXMLGregorianCalendar(isoTimeString); } @@ -170,4 +172,12 @@ public interface ResponseMapper { @Mapping(target = "noMessageAvailable.reason", source = "errorString") MsgBoxResponseType mapMsgBoxResponseTypeError(String errorString); + @Mapping(target = "isServiceAvailableValue.serviceIsAvailable", expression = "java( true )") + @Mapping(target = "serviceType", source = "service") + @Mapping(target = "reader.identifier.value", source = "readerIdentifierValue") + @Mapping(target = "serviceParameter", ignore = true) + LookupServiceResultType mapLookupServiceResultType(XtaLookupServiceRequest xtaLookupServiceRequest); + + @Mapping(target = "lookupServiceResultList.lookupServiceResult", expression = "java( List.of( mapLookupServiceResultType(xtaLookupServiceRequest) ) )") + LookupServiceResponse mapLookupServiceResponse(XtaLookupServiceRequest xtaLookupServiceRequest); } diff --git a/src/main/java/de/ozgcloud/xta/test/app/model/XtaLookupServiceRequest.java b/src/main/java/de/ozgcloud/xta/test/app/model/XtaLookupServiceRequest.java new file mode 100644 index 0000000000000000000000000000000000000000..64e124809cc3702cb45281575046e30b69381a87 --- /dev/null +++ b/src/main/java/de/ozgcloud/xta/test/app/model/XtaLookupServiceRequest.java @@ -0,0 +1,11 @@ +package de.ozgcloud.xta.test.app.model; + +import lombok.Builder; + +@Builder +public record XtaLookupServiceRequest( + String service, + String readerIdentifierValue, + String authorIdentifierValue +) { +} diff --git a/src/main/java/de/ozgcloud/xta/test/app/server/ManagementPortImpl.java b/src/main/java/de/ozgcloud/xta/test/app/server/ManagementPortImpl.java index 22d3e19289164847a5119fa2ced0fcfac0d4003b..b0a48f920e0980191fee1875154ba2efaec80fbd 100644 --- a/src/main/java/de/ozgcloud/xta/test/app/server/ManagementPortImpl.java +++ b/src/main/java/de/ozgcloud/xta/test/app/server/ManagementPortImpl.java @@ -1,23 +1,27 @@ package de.ozgcloud.xta.test.app.server; -import java.util.List; - -import genv3.de.xoev.transport.xta.x211.*; -import genv3.de.xoev.transport.xta.x211.LookupServiceRequest.LookupServiceRequestList; -import genv3.de.xoev.transport.xta.x211.LookupServiceResponse.LookupServiceResultList; -import genv3.eu.osci.ws.x2014.x10.transport.PartyType; import jakarta.annotation.Generated; import jakarta.jws.WebService; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; + import org.apache.cxf.annotations.SchemaValidation; import org.apache.cxf.ws.addressing.AttributedURIType; import org.springframework.stereotype.Component; +import de.ozgcloud.xta.test.app.mapper.RequestMapper; +import de.ozgcloud.xta.test.app.mapper.ResponseMapper; import de.ozgcloud.xta.test.app.service.ParameterValidatorService; import de.ozgcloud.xta.test.app.service.XtaParameter; import de.ozgcloud.xta.test.app.util.XtaIdGenerator; - +import genv3.de.xoev.transport.xta.x211.CancelDeniedException; +import genv3.de.xoev.transport.xta.x211.InvalidMessageIDException; +import genv3.de.xoev.transport.xta.x211.LookupServiceRequest; +import genv3.de.xoev.transport.xta.x211.ManagementPortType; +import genv3.de.xoev.transport.xta.x211.ParameterIsNotValidException; +import genv3.de.xoev.transport.xta.x211.PermissionDeniedException; +import genv3.de.xoev.transport.xta.x211.TransportReport; +import genv3.de.xoev.transport.xta.x211.XTAWSTechnicalProblemException; +import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; @WebService(serviceName = "XTAService", portName = "ManagementPort", targetNamespace = "http://xoev.de/transport/xta/211", wsdlLocation = "classpath:wsdl/XTA.wsdl", endpointInterface = "genv3.de.xoev.transport.xta.x211.ManagementPortType") @SchemaValidation(type = SchemaValidation.SchemaValidationType.BOTH) @@ -28,8 +32,9 @@ public class ManagementPortImpl implements ManagementPortType { private final ParameterValidatorService validator; - private final XtaIdGenerator xtaIdGenerator; + private final ResponseMapper responseMapper; + private final RequestMapper requestMapper; /* * (non-Javadoc) @@ -71,32 +76,9 @@ public class ManagementPortImpl implements ManagementPortType { throws XTAWSTechnicalProblemException, PermissionDeniedException, ParameterIsNotValidException { log.info("Executing operation lookupService"); - LookupServiceResponse lookupResponse = new LookupServiceResponse(); - - LookupServiceResultList lookupServiceResultList = new LookupServiceResultList(); - lookupResponse.setLookupServiceResultList(lookupServiceResultList); - List<LookupServiceResultType> resultlist = lookupServiceResultList.getLookupServiceResult(); + var request = requestMapper.mapXtaLookupServiceRequest(lookupServiceRequest, authorIdentifier); - for (LookupServiceRequestList lookupServiceRequestList : lookupServiceRequest.getLookupServiceRequestList()) { - handleLookupServiceRequest(lookupServiceRequestList, resultlist); - } - return lookupResponse; - } - - private void handleLookupServiceRequest(LookupServiceRequestList lookupServiceRequestList, List<LookupServiceResultType> resultlist) { - LookupServiceResultType lookupServiceResult = new LookupServiceResultType(); - lookupServiceResult.setServiceType(lookupServiceRequestList.getLookupService().getServiceType()); - IsServiceAvailableValueType serviceAvailable = new IsServiceAvailableValueType(); - serviceAvailable.setServiceIsAvailable(true); - lookupServiceResult.setIsServiceAvailableValue(serviceAvailable); - - PartyType requestReader = lookupServiceRequestList.getLookupService().getReader(); - PartyType reader = new PartyType(); - reader.setIdentifier(requestReader.getIdentifier()); - reader.getSecurityToken().addAll(requestReader.getSecurityToken()); - lookupServiceResult.setReader(reader); - - resultlist.add(lookupServiceResult); + return responseMapper.mapLookupServiceResponse(request); } /* @@ -111,8 +93,7 @@ public class ManagementPortImpl implements ManagementPortType { throws XTAWSTechnicalProblemException, CancelDeniedException, PermissionDeniedException, ParameterIsNotValidException { log.info("Executing operation cancelMessage"); - log.info("cancelMessage called, author: {}", authorIdentifier); - + throw new XTAWSTechnicalProblemException("Method not supported"); } /* diff --git a/src/test/java/de/ozgcloud/xta/test/app/factory/LookupServiceRequestTestFactory.java b/src/test/java/de/ozgcloud/xta/test/app/factory/LookupServiceRequestTestFactory.java index 779ada83524c8d59856fdbf2e1b035b5dfd57f9f..b36a0ea802f05400233148421310af440c7ce1c3 100644 --- a/src/test/java/de/ozgcloud/xta/test/app/factory/LookupServiceRequestTestFactory.java +++ b/src/test/java/de/ozgcloud/xta/test/app/factory/LookupServiceRequestTestFactory.java @@ -7,6 +7,7 @@ import genv3.eu.osci.ws.x2014.x10.transport.PartyType; public class LookupServiceRequestTestFactory { public static final String SERVICE_TYPE = "http://www.osci.de/xmeld181/xmeld181Rueckmeldung.wsdl"; public static final PartyType READER_PARTY_TYPE = createReaderPartyType(); + public static final String LOOKUP_SERVICE_REQUEST_READER = "gae:reader"; public static LookupServiceRequest create() { var lookupServiceRequest = new LookupServiceRequest(); @@ -31,7 +32,7 @@ public class LookupServiceRequestTestFactory { private static PartyType createReaderPartyType() { var readerPartyType = new PartyType(); - var readerIdentifier = PartyIdentifierTypeTestFactory.createReader("gae:reader"); + var readerIdentifier = PartyIdentifierTypeTestFactory.createReader(LOOKUP_SERVICE_REQUEST_READER); readerPartyType.setIdentifier(readerIdentifier); return readerPartyType; } diff --git a/src/test/java/de/ozgcloud/xta/test/app/factory/MsgBoxCloseRequestTypeTestFactory.java b/src/test/java/de/ozgcloud/xta/test/app/factory/MsgBoxCloseRequestTypeTestFactory.java index 1e679ba04fa7a6d1aff857ede045c9d8f7863ba3..a3cd76e64a66669286222fb39cc949d5aba9776a 100644 --- a/src/test/java/de/ozgcloud/xta/test/app/factory/MsgBoxCloseRequestTypeTestFactory.java +++ b/src/test/java/de/ozgcloud/xta/test/app/factory/MsgBoxCloseRequestTypeTestFactory.java @@ -1,14 +1,13 @@ package de.ozgcloud.xta.test.app.factory; import genv3.eu.osci.ws.x2008.x05.transport.MsgBoxCloseRequestType; -import org.apache.cxf.ws.addressing.AttributedURIType; public class MsgBoxCloseRequestTypeTestFactory { - public static final AttributedURIType MESSAGE_ID = AttributedURITypeTestFactory.create("de:xta:messageid:xta-test-server:close-id"); + public static final String CLOSE_REQUEST_MESSAGE_ID = "de:xta:messageid:xta-test-server:close-id"; public static MsgBoxCloseRequestType create() { var closeRequest = new MsgBoxCloseRequestType(); - closeRequest.getLastMsgReceived().add(MESSAGE_ID); + closeRequest.getLastMsgReceived().add(AttributedURITypeTestFactory.create(CLOSE_REQUEST_MESSAGE_ID)); return closeRequest; } } diff --git a/src/test/java/de/ozgcloud/xta/test/app/factory/MsgBoxFetchRequestTestFactory.java b/src/test/java/de/ozgcloud/xta/test/app/factory/MsgBoxFetchRequestTestFactory.java index c5af9144678c4f81174ca4d3a90ea88fe34f8e10..94b619d19e5e5deb79dd0502a6685cee1ee44775 100644 --- a/src/test/java/de/ozgcloud/xta/test/app/factory/MsgBoxFetchRequestTestFactory.java +++ b/src/test/java/de/ozgcloud/xta/test/app/factory/MsgBoxFetchRequestTestFactory.java @@ -2,15 +2,14 @@ package de.ozgcloud.xta.test.app.factory; import genv3.eu.osci.ws.x2008.x05.transport.MsgBoxFetchRequest; import genv3.eu.osci.ws.x2008.x05.transport.MsgSelector; -import org.apache.cxf.ws.addressing.AttributedURIType; public class MsgBoxFetchRequestTestFactory { - public static final AttributedURIType MESSAGE_ID = AttributedURITypeTestFactory.create("urn:de:xta:messageId:xta-test-server:1234"); + public static final String GET_MESSAGE_REQUEST_MESSAGE_ID = "urn:de:xta:messageId:xta-test-server:1234"; public static MsgBoxFetchRequest create() { MsgBoxFetchRequest fetchRequest = new MsgBoxFetchRequest(); MsgSelector msgSelector = new MsgSelector(); - msgSelector.getMessageID().add(MESSAGE_ID); + msgSelector.getMessageID().add(AttributedURITypeTestFactory.create(GET_MESSAGE_REQUEST_MESSAGE_ID)); fetchRequest.setMsgSelector(msgSelector); return fetchRequest; } diff --git a/src/test/java/de/ozgcloud/xta/test/app/mapper/PartyTypeTestFactory.java b/src/test/java/de/ozgcloud/xta/test/app/mapper/PartyTypeTestFactory.java index 136b5df9b3016cd0887453de8d7a509e87d856b9..f8c968241ce30094436340bd28273c64dfd032dd 100644 --- a/src/test/java/de/ozgcloud/xta/test/app/mapper/PartyTypeTestFactory.java +++ b/src/test/java/de/ozgcloud/xta/test/app/mapper/PartyTypeTestFactory.java @@ -2,23 +2,20 @@ package de.ozgcloud.xta.test.app.mapper; import static de.ozgcloud.xta.test.app.factory.MessageMetaDataTestFactory.*; -import genv3.eu.osci.ws.x2014.x10.transport.PartyIdentifierType; import genv3.eu.osci.ws.x2014.x10.transport.PartyType; public class PartyTypeTestFactory { public static PartyType create() { var partyIdentifier = new PartyType(); - partyIdentifier.setIdentifier(createIdentifier()); + partyIdentifier.setIdentifier(READER_IDENTIFIER); return partyIdentifier; } - private static PartyIdentifierType createIdentifier() { - var identifier = new PartyIdentifierType(); - identifier.setName(READER_IDENTIFIER.getName()); - identifier.setCategory(READER_IDENTIFIER.getCategory()); - identifier.setValue(READER_IDENTIFIER.getValue()); - return identifier; + public static PartyType createWithAuthor() { + var partyIdentifier = new PartyType(); + partyIdentifier.setIdentifier(AUTHOR_IDENTIFIER); + return partyIdentifier; } } diff --git a/src/test/java/de/ozgcloud/xta/test/app/mapper/RequestMapperTest.java b/src/test/java/de/ozgcloud/xta/test/app/mapper/RequestMapperTest.java index edc1f8dde5966f80ad8a7b8beaed98cdb23ba708..5aedc398cba4170fa89edae7adf8f6e1494217d0 100644 --- a/src/test/java/de/ozgcloud/xta/test/app/mapper/RequestMapperTest.java +++ b/src/test/java/de/ozgcloud/xta/test/app/mapper/RequestMapperTest.java @@ -1,5 +1,8 @@ package de.ozgcloud.xta.test.app.mapper; +import static de.ozgcloud.xta.test.app.factory.LookupServiceRequestTestFactory.*; +import static de.ozgcloud.xta.test.app.factory.MsgBoxCloseRequestTypeTestFactory.*; +import static de.ozgcloud.xta.test.app.factory.MsgBoxFetchRequestTestFactory.*; import static de.ozgcloud.xta.test.app.factory.XtaMessageMetaDataTestFactory.*; import static org.assertj.core.api.Assertions.*; @@ -15,11 +18,17 @@ import org.mapstruct.factory.Mappers; import de.ozgcloud.xta.test.app.factory.AttributedURITypeTestFactory; import de.ozgcloud.xta.test.app.factory.ContentTypeTestFactory; import de.ozgcloud.xta.test.app.factory.GenericContentContainerTestFactory; +import de.ozgcloud.xta.test.app.factory.LookupServiceRequestTestFactory; import de.ozgcloud.xta.test.app.factory.MessageMetaDataTestFactory; +import de.ozgcloud.xta.test.app.factory.MsgBoxCloseRequestTypeTestFactory; +import de.ozgcloud.xta.test.app.factory.MsgBoxFetchRequestTestFactory; import de.ozgcloud.xta.test.app.factory.MsgBoxStatusListRequestTypeTestFactory; import de.ozgcloud.xta.test.app.factory.QualifierTypeBusinessScenarioTestFactory; import de.ozgcloud.xta.test.app.model.Identifier; +import de.ozgcloud.xta.test.app.model.XtaCloseRequest; import de.ozgcloud.xta.test.app.model.XtaFile; +import de.ozgcloud.xta.test.app.model.XtaGetMessageRequest; +import de.ozgcloud.xta.test.app.model.XtaLookupServiceRequest; import de.ozgcloud.xta.test.app.model.XtaMessageMetaDataListingRequest; import genv3.de.xoev.transport.xta.x211.ContentType; import genv3.de.xoev.transport.xta.x211.GenericContentContainer; @@ -27,6 +36,7 @@ import genv3.eu.osci.ws.x2008.x05.transport.MsgBoxFetchRequest; import genv3.eu.osci.ws.x2008.x05.transport.MsgSelector; import genv3.eu.osci.ws.x2014.x10.transport.MessageMetaData; import genv3.eu.osci.ws.x2014.x10.transport.PartyIdentifierType; +import genv3.eu.osci.ws.x2014.x10.transport.PartyType; import lombok.SneakyThrows; public class RequestMapperTest { @@ -182,7 +192,91 @@ public class RequestMapperTest { return requestMapper.mapMessageMetaDataListingRequest(MsgBoxStatusListRequestTypeTestFactory.create(MAX_LIST_ITEMS), PartyTypeTestFactory.create()); } + } + + @DisplayName("map xta close request") + @Nested + class TestMapXtaCloseRequest { + @DisplayName("should map message id") + @Test + void shouldMapMessageId() { + var result = doMapping(); + + assertThat(result.messageId()).isEqualTo(CLOSE_REQUEST_MESSAGE_ID); + } + @DisplayName("should map client identifier value") + @Test + void shouldMapClientIdentifierValue() { + var result = doMapping(); + + assertThat(result.clientIdentifierValue()).isEqualTo(READER_IDENTIFIER.value()); + } + + private XtaCloseRequest doMapping() { + return requestMapper.mapXtaCloseRequest(MsgBoxCloseRequestTypeTestFactory.create(), + PartyTypeTestFactory.create()); + } + } + + @DisplayName("map xta get message request") + @Nested + class TestMapXtaGetMessageRequest { + @DisplayName("should map message id") + @Test + void shouldMapMessageId() { + var result = doMapping(); + + assertThat(result.messageId()).isEqualTo(GET_MESSAGE_REQUEST_MESSAGE_ID); + } + + @DisplayName("should map client identifier value") + @Test + void shouldMapClientIdentifierValue() { + var result = doMapping(); + + assertThat(result.clientIdentifierValue()).isEqualTo(READER_IDENTIFIER.value()); + } + + private XtaGetMessageRequest doMapping() { + return requestMapper.mapXtaGetMessageRequest(MsgBoxFetchRequestTestFactory.create(), + PartyTypeTestFactory.create()); + } + } + + @DisplayName("map xta lookup service request") + @Nested + class TestMapXtaLookupServiceRequest { + private static final PartyType partyType = PartyTypeTestFactory.create(); + + @DisplayName("should map service") + @Test + void shouldMapService() { + var result = doMapping(); + + assertThat(result.service()).isEqualTo(SERVICE_TYPE); + } + + @DisplayName("should map reader identifier value") + @Test + void shouldMapReaderIdentifierValue() { + var result = doMapping(); + + assertThat(result.readerIdentifierValue()).isEqualTo(LOOKUP_SERVICE_REQUEST_READER); + } + + @DisplayName("should map author identifier value") + @Test + void shouldMapAuthorIdentifierValue() { + var result = doMapping(); + + assertThat(result.authorIdentifierValue()).isEqualTo(partyType.getIdentifier().getValue()); + } + + private XtaLookupServiceRequest doMapping() { + return requestMapper.mapXtaLookupServiceRequest(LookupServiceRequestTestFactory.create(), + partyType); + } } } diff --git a/src/test/java/de/ozgcloud/xta/test/app/mapper/ResponseMapperTest.java b/src/test/java/de/ozgcloud/xta/test/app/mapper/ResponseMapperTest.java index a93d986f6bbf1503ee0c701e326d95696a560513..cb249cecc0e26954c10a0a3d0d7e0b702e631c61 100644 --- a/src/test/java/de/ozgcloud/xta/test/app/mapper/ResponseMapperTest.java +++ b/src/test/java/de/ozgcloud/xta/test/app/mapper/ResponseMapperTest.java @@ -2,6 +2,7 @@ package de.ozgcloud.xta.test.app.mapper; import static de.ozgcloud.xta.test.app.factory.XtaMessageMetaDataTestFactory.*; import static de.ozgcloud.xta.test.app.mapper.ResponseMapper.*; +import static de.ozgcloud.xta.test.app.mapper.XtaLookupServiceRequestTestFactory.*; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; @@ -22,7 +23,10 @@ import de.ozgcloud.xta.test.app.model.XtaMessageMetaDataListing; import de.ozgcloud.xta.test.app.util.XtaId; import de.ozgcloud.xta.test.app.util.XtaIdGenerator; import genv3.de.xoev.transport.xta.x211.ContentType; +import genv3.de.xoev.transport.xta.x211.LookupServiceResponse; +import genv3.de.xoev.transport.xta.x211.LookupServiceResultType; import genv3.eu.osci.ws.x2008.x05.transport.MsgStatusListType; +import genv3.eu.osci.ws.x2014.x10.transport.DeliveryAttributesType; import genv3.eu.osci.ws.x2014.x10.transport.MessageMetaData; import genv3.eu.osci.ws.x2014.x10.transport.QualifierType; import lombok.SneakyThrows; @@ -277,10 +281,14 @@ public class ResponseMapperTest { .isEqualTo(mapper.mapPartyIdentifierType(AUTHOR_IDENTIFIER)); } - @DisplayName("should default sender identifier") + @DisplayName("should set default sender identifier") @Test void shouldSetDefaultSenderIdentifier() { - // TODO + var result = mapFirstMessageMetaData(); + + assertThat(result.getOriginators().getSender().getIdentifier()) + .usingRecursiveComparison() + .isEqualTo(mapper.mapPartyIdentifierType(SENDER_IDENTIFIER)); } @DisplayName("should map reader identifier") @@ -296,19 +304,43 @@ public class ResponseMapperTest { @DisplayName("should set default delivery attribute delivery") @Test void shouldSetDefaultDeliveryAttributeDelivery() { - // TODO + var result = mapFirstMessageMetaDataDelivery(); + + assertThat(result.getDelivery()).isNotNull(); } - @DisplayName("should set default delivery attribute inital fetch") + @DisplayName("should set default delivery attribute initial fetch") @Test void shouldSetDefaultDeliveryAttributeInitialFetch() { - // TODO + var result = mapFirstMessageMetaDataDelivery(); + + assertThat(result.getInitialFetch()).isNotNull(); + } + + @DisplayName("should set default delivery attribute initial send") + @Test + void shouldSetDefaultDeliveryAttributeInitialSend() { + var result = mapFirstMessageMetaDataDelivery(); + + assertThat(result.getInitialSend()).isNotNull(); + } + + @DisplayName("should set default delivery attribute origin") + @Test + void shouldSetDefaultDeliveryAttributeOrigin() { + var result = mapFirstMessageMetaDataDelivery(); + + assertThat(result.getOrigin()).isNotNull(); } private MsgStatusListType doMapping() { return mapper.mapMsgStatusListType(xtaMessageMetaDataListing); } + private DeliveryAttributesType mapFirstMessageMetaDataDelivery() { + return mapFirstMessageMetaData().getDeliveryAttributes(); + } + private MessageMetaData mapFirstMessageMetaData() { return doMapping().getMessageMetaData().getFirst(); } @@ -419,4 +451,41 @@ public class ResponseMapperTest { assertThat(result.getNoMessageAvailable()).isNull(); } } + + @DisplayName("map lookup service response") + @Nested + class TestMapLookupServiceResponse { + + @DisplayName("should map service type") + @Test + void shouldMapServiceType() { + var result = getFirstLookupServiceResult(); + + assertThat(result.getServiceType()).isEqualTo(LOOKUP_SERVICE_SERVICE); + } + + @DisplayName("should map reader identifier value") + @Test + void shouldMapReaderIdentifierValue() { + var result = getFirstLookupServiceResult(); + + assertThat(result.getReader().getIdentifier().getValue()).isEqualTo(LOOKUP_SERVICE_READER_IDENTIFIER_VALUE); + } + + @DisplayName("should map service is available value") + @Test + void shouldMapServiceIsAvailableValue() { + var result = getFirstLookupServiceResult(); + + assertThat(result.getIsServiceAvailableValue().isServiceIsAvailable()).isTrue(); + } + + private LookupServiceResultType getFirstLookupServiceResult() { + return doMapping().getLookupServiceResultList().getLookupServiceResult().getFirst(); + } + + private LookupServiceResponse doMapping() { + return mapper.mapLookupServiceResponse(XtaLookupServiceRequestTestFactory.create()); + } + } } diff --git a/src/test/java/de/ozgcloud/xta/test/app/mapper/XtaLookupServiceRequestTestFactory.java b/src/test/java/de/ozgcloud/xta/test/app/mapper/XtaLookupServiceRequestTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..2c9e28a819325324ef3b0325fecdd9fbf8ed0bf8 --- /dev/null +++ b/src/test/java/de/ozgcloud/xta/test/app/mapper/XtaLookupServiceRequestTestFactory.java @@ -0,0 +1,21 @@ +package de.ozgcloud.xta.test.app.mapper; + +import de.ozgcloud.xta.test.app.model.XtaLookupServiceRequest; + +public class XtaLookupServiceRequestTestFactory { + + public static String LOOKUP_SERVICE_SERVICE = "lookup-request-service"; + public static String LOOKUP_SERVICE_READER_IDENTIFIER_VALUE = "reader-identifier-value"; + public static String LOOKUP_SERVICE_AUTHOR_IDENTIFIER_VALUE = "author-identifier-value"; + + public static XtaLookupServiceRequest create() { + return createBuilder().build(); + } + + public static XtaLookupServiceRequest.XtaLookupServiceRequestBuilder createBuilder() { + return XtaLookupServiceRequest.builder() + .service(LOOKUP_SERVICE_SERVICE) + .readerIdentifierValue(LOOKUP_SERVICE_READER_IDENTIFIER_VALUE) + .authorIdentifierValue(LOOKUP_SERVICE_AUTHOR_IDENTIFIER_VALUE); + } +} diff --git a/src/test/java/de/ozgcloud/xta/test/app/server/ManagementPortImplTest.java b/src/test/java/de/ozgcloud/xta/test/app/server/ManagementPortImplTest.java index 492a59e5e5e0d8f89a2be160838ab9c09f134f0f..a8daca8b5a2ea0555daaddf91ebedca6778e37d9 100644 --- a/src/test/java/de/ozgcloud/xta/test/app/server/ManagementPortImplTest.java +++ b/src/test/java/de/ozgcloud/xta/test/app/server/ManagementPortImplTest.java @@ -1,13 +1,8 @@ package de.ozgcloud.xta.test.app.server; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatNoException; -import static org.mockito.Mockito.when; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; -import genv3.de.xoev.transport.xta.x211.LookupServiceRequest; -import genv3.de.xoev.transport.xta.x211.LookupServiceResultType; -import genv3.eu.osci.ws.x2014.x10.transport.PartyType; -import lombok.SneakyThrows; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -20,6 +15,10 @@ import de.ozgcloud.xta.test.app.factory.LookupServiceRequestTestFactory; import de.ozgcloud.xta.test.app.service.ParameterValidatorService; import de.ozgcloud.xta.test.app.util.XtaId; import de.ozgcloud.xta.test.app.util.XtaIdGenerator; +import genv3.de.xoev.transport.xta.x211.LookupServiceRequest; +import genv3.de.xoev.transport.xta.x211.LookupServiceResultType; +import genv3.eu.osci.ws.x2014.x10.transport.PartyType; +import lombok.SneakyThrows; public class ManagementPortImplTest { @Spy @@ -29,8 +28,9 @@ public class ManagementPortImplTest { @InjectMocks private ManagementPortImpl managementPortImpl; + @DisplayName("create message id") @Nested - class CreateMessageId { + class TestCreateMessageId { @Mock private PartyType authorIdentifier; @@ -41,38 +41,33 @@ public class ManagementPortImplTest { when(xtaIdGenerator.generateMessageId()).thenReturn(MESSAGE_ID); } - @DisplayName("Should always accept request") - @Test - void shouldAccecptRequest() { - assertThatNoException().isThrownBy(() -> managementPortImpl.createMessageId(authorIdentifier)); - } - - @DisplayName("Should return new message id") + @DisplayName("should return") @Test + @SneakyThrows void shouldCreateMessageId() { - try{ - var messageId = managementPortImpl.createMessageId(authorIdentifier); - assertThat(messageId.getValue()).matches(MESSAGE_ID.toString()); - } catch (Exception e) { - // ignore - } + var messageId = managementPortImpl.createMessageId(authorIdentifier); + + assertThat(messageId.getValue()).matches(MESSAGE_ID.toString()); } } + @DisplayName("check account active") @Nested - class CheckAccountActive { + class TestCheckAccountActive { @Mock private PartyType authorIdentifier; - @DisplayName("Should always accept request") + @DisplayName("should return") @Test - void shouldAccecptRequest() { - assertThatNoException().isThrownBy(() -> managementPortImpl.checkAccountActive(authorIdentifier)); + @SneakyThrows + void shouldAcceptRequest() { + managementPortImpl.checkAccountActive(authorIdentifier); } } + @DisplayName("lookup service") @Nested - class LookupService { + class TestLookupService { @Mock private PartyType authorIdentifier; private LookupServiceRequest lookupServiceRequest; @@ -82,12 +77,6 @@ public class ManagementPortImplTest { lookupServiceRequest = LookupServiceRequestTestFactory.create(); } - @DisplayName("Should always accept request") - @Test - void shouldAccecptRequest() { - assertThatNoException().isThrownBy(() -> managementPortImpl.lookupService(lookupServiceRequest, authorIdentifier)); - } - @DisplayName("Should return IsServiceAvailableValue as true") @Test void shouldReturnIsServiceAvailableValue() {