diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java index a3d3ccdbf31cf972eb11c14d4891a93ecfaafe5c..c03d4e681f51ff7a38fb4741ac21e92e187638e6 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java @@ -34,7 +34,7 @@ public class OsiPostfachRemoteService implements PostfachRemoteService { public Stream<PostfachNachricht> getAllMessages() { try { return postfachApiFacadeService.receiveMessages(); - }catch (RuntimeException e) { + } catch (RuntimeException e) { throw new OsiPostfachException("Failed to get messages", e); } } diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java index 82ea45f9be3c833242551186e6f7fea9e400c9c7..a0d414ec0f8b44661bc2a9dd1dda47983f17eb66 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java @@ -51,8 +51,7 @@ public class ApiClientConfiguration { } private RestClient restClient(ClientRegistrationRepository clientRegistrations) { - OAuth2ClientHttpRequestInterceptor requestInterceptor = - new OAuth2ClientHttpRequestInterceptor(authorizedClientManager(clientRegistrations)); + var requestInterceptor = new OAuth2ClientHttpRequestInterceptor(authorizedClientManager(clientRegistrations)); requestInterceptor.setClientRegistrationIdResolver(request -> "osi2"); return defaultRestClientBuilder() diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/Osi2PostfachProperties.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/Osi2PostfachProperties.java index f5a3d44421b73db9566abbe773b7d2d54fc28b84..81ef4623dcd53c1d2ab13b03c5b233bd79de5386 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/Osi2PostfachProperties.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/Osi2PostfachProperties.java @@ -17,7 +17,7 @@ import lombok.Setter; @RequiredArgsConstructor public class Osi2PostfachProperties { - public static final String PREFIX = "ozgcloud.osiv2-postfach"; + public static final String PREFIX = "ozgcloud.osiv2"; private boolean enabled; @@ -30,7 +30,7 @@ public class Osi2PostfachProperties { @Configuration @ConfigurationProperties(prefix = ApiConfiguration.PREFIX) public static class ApiConfiguration { - static final String PREFIX = Osi2PostfachProperties.PREFIX + ".api"; + public static final String PREFIX = Osi2PostfachProperties.PREFIX + ".api"; private String resource; private String url; @@ -47,7 +47,7 @@ public class Osi2PostfachProperties { @Configuration @ConfigurationProperties(prefix = ProxyConfiguration.PREFIX) public static class ProxyConfiguration { - static final String PREFIX = Osi2PostfachProperties.PREFIX + ".http-proxy"; + public static final String PREFIX = Osi2PostfachProperties.PREFIX + ".proxy"; private boolean enabled; diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2RequestMapper.java similarity index 98% rename from src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java rename to src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2RequestMapper.java index c9a42ae3fa9756dfe2ac34d20bfd73405f85a5fe..4b1482c4efeb283320bd9abace07dc89da77f52f 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2RequestMapper.java @@ -17,7 +17,7 @@ import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1References; import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1ReplyBehavior; @Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR) -public interface RequestMapper { +public interface Osi2RequestMapper { @Mapping(target = "sequencenumber", source = "vorgangId") @Mapping(target = "body", source = "mailBody") diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/ResponseMapper.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapper.java similarity index 97% rename from src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/ResponseMapper.java rename to src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapper.java index 84a1b80ce2f3ac508b39ce35bd9c52edc6f5ce4b..f5acb80a874aed8cf323aca797cbc5488f7846f5 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/ResponseMapper.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapper.java @@ -1,7 +1,6 @@ package de.ozgcloud.nachrichten.postfach.osiv2.transfer; import java.time.ZoneOffset; -import java.time.format.DateTimeFormatter; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -17,7 +16,7 @@ import lombok.Builder; import lombok.Getter; @Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR, imports = ZoneOffset.class) -public interface ResponseMapper { +public interface Osi2ResponseMapper { String POSTFACH_ADDRESS_VERSION = "2.0"; int POSTFACH_ADDRESS_TYPE = 2; diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java index ed46e2754ff8ee868693d8f2415ccea958bccdad..d11c556369fb8c3a892d1be7c46476c0b7298ca6 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java @@ -1,5 +1,7 @@ package de.ozgcloud.nachrichten.postfach.osiv2.transfer; +import java.util.Collection; +import java.util.Optional; import java.util.UUID; import java.util.stream.Stream; @@ -20,27 +22,29 @@ import lombok.extern.log4j.Log4j2; public class PostfachApiFacadeService { private final MessageExchangeApi messageExchangeApi; - private final RequestMapper requestMapper; - private final ResponseMapper responseMapper; + private final Osi2RequestMapper osi2RequestMapper; + private final Osi2ResponseMapper osi2ResponseMapper; private static final int MAX_NUMBER_RECEIVED_MESSAGES = 100; public void sendMessage(PostfachNachricht nachricht) { messageExchangeApi.sendMessage( - requestMapper.mapMailboxId(nachricht), - requestMapper.mapOutSendMessageRequestV2(nachricht) + osi2RequestMapper.mapMailboxId(nachricht), + osi2RequestMapper.mapOutSendMessageRequestV2(nachricht) ); } public Stream<PostfachNachricht> receiveMessages() { var response = messageExchangeApi.receiveMessages(MAX_NUMBER_RECEIVED_MESSAGES, 0); - // TODO response.getMessages() is Nullable - return response.getMessages().stream().map(this::fetchMessageByGuid); + return Optional.ofNullable(response.getMessages()) + .stream() + .flatMap(Collection::stream) + .map(this::fetchMessageByGuid); } PostfachNachricht fetchMessageByGuid(final MessageExchangeReceiveMessage message) { var messageReply = messageExchangeApi.getMessage(message.getGuid()); - return responseMapper.toPostfachNachricht(messageReply); + return osi2ResponseMapper.toPostfachNachricht(messageReply); } public void deleteMessage(final String messageId) { diff --git a/src/main/resources/application-stage.yml b/src/main/resources/application-stage.yml index 6892480bd6613072000a2bd939e6a72845bd109b..c2804acf5bd4bec3a1e037f7cf334c73b2905050 100644 --- a/src/main/resources/application-stage.yml +++ b/src/main/resources/application-stage.yml @@ -13,14 +13,14 @@ spring: osi2: token-uri: 'https://idp.serviceportal-stage.schleswig-holstein.de/webidp2/connect/token' ozgcloud: - osiv2-postfach: + osiv2: enabled: false api: resource: 'urn:dataport:osi:postfach:rz2:stage:sh' url: 'https://api-gateway-stage.dataport.de:443/api/osi_postfach/1.0.0' tenant: 'SH' name-identifier: 'ozgkopfstelle' - http-proxy: + proxy: enabled: true host: 127.0.0.1 port: 3128 diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java index 1de65de1ef648fa076aed0b384f63e957c88fba8..0acee01ecdbf9d81f5ce6d8d565300107d75c0e3 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java @@ -36,7 +36,7 @@ import lombok.SneakyThrows; @SpringBootTest(classes = TestApplication.class) @ActiveProfiles({ "stage", "itcase" }) @TestPropertySource(properties = { - "ozgcloud.osiv2-postfach.http-proxy.enabled=false", + "ozgcloud.osiv2.proxy.enabled=false", }) class OsiPostfachRemoteServiceITCase { @@ -53,8 +53,8 @@ class OsiPostfachRemoteServiceITCase { registry.add("spring.security.oauth2.client.provider.osi2.token-uri", OSI_MOCK_SERVER_EXTENSION::getAccessTokenUrl); registry.add("spring.security.oauth2.client.registration.osi2.scope", () -> CLIENT_SCOPES); registry.add("spring.security.oauth2.client.registration.osi2.client-id", () -> CLIENT_ID); - registry.add("ozgcloud.osiv2-postfach.api.url", OSI_MOCK_SERVER_EXTENSION::getPostfachFacadeUrl); - registry.add("ozgcloud.osiv2-postfach.api.resource", () -> RESOURCE_URN); + registry.add("ozgcloud.osiv2.api.url", OSI_MOCK_SERVER_EXTENSION::getPostfachFacadeUrl); + registry.add("ozgcloud.osiv2.api.resource", () -> RESOURCE_URN); } private WireMockServer postfachFacadeMockServer; diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java index 29f64ecbcd8799c1c24331dfc0cf1cee4bcf177b..be0f329f70b0c21b27b6fadf053334f948b37c15 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java @@ -6,7 +6,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Stream; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -46,11 +45,11 @@ public class OsiPostfachRemoteServiceRemoteITCase { () -> System.getenv("SH_STAGE_CLIENT_SECRET") ); registry.add( - "ozgcloud.osiv2-postfach.http-proxy.host", + "ozgcloud.osiv2.proxy.host", () -> matchProxyRegex(System.getenv("HTTP_PROXY")).group(1) ); registry.add( - "ozgcloud.osiv2-postfach.http-proxy.port", + "ozgcloud.osiv2.proxy.port", () -> matchProxyRegex(System.getenv("HTTP_PROXY")).group(2) ); } @@ -63,7 +62,6 @@ public class OsiPostfachRemoteServiceRemoteITCase { throw new IllegalArgumentException("Proxy host and port not found in '%s'".formatted(text)); } - @Disabled @DisplayName("send message") @Nested class TestSendMessage { @@ -90,7 +88,6 @@ public class OsiPostfachRemoteServiceRemoteITCase { } } - @Disabled @DisplayName("delete message") @Nested class TestDeleteMessageById { diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java index a00ab88ae8b7d18aa79a228c651d55ff472a8289..685c36f61dd8d1d44afc185da5bf94bf3eb4ee67 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java @@ -81,6 +81,7 @@ class OsiPostfachRemoteServiceTest { verify(postfachApiFacadeService).deleteMessage(any()); } + @DisplayName("should throw osi postfach exception on runtime exception") @Test void shouldThrowOsiPostfachExceptionOnRuntimeException() { diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapperTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2RequestMapperTest.java similarity index 97% rename from src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapperTest.java rename to src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2RequestMapperTest.java index 0e67c3c307449847d9e9e89e936f6812938ae98a..3abec1a5f53dd2c897230896e38a443eebd4ce4d 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapperTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2RequestMapperTest.java @@ -23,9 +23,9 @@ import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.OutSendMessageRequestV2; import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1EidasLevel; import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1ReplyBehavior; -class RequestMapperTest { +class Osi2RequestMapperTest { - private final RequestMapper mapper = Mappers.getMapper(RequestMapper.class); + private final Osi2RequestMapper mapper = Mappers.getMapper(Osi2RequestMapper.class); @DisplayName("map mailbox id") @Nested diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/ResponseMapperTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapperTest.java similarity index 96% rename from src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/ResponseMapperTest.java rename to src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapperTest.java index c45f08e8c51cdf0d80cc3316672738c154559274..54586de660f6dacc6967dff94bdf70e6f3871d79 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/ResponseMapperTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapperTest.java @@ -16,10 +16,10 @@ import de.ozgcloud.nachrichten.postfach.PostfachNachricht; import de.ozgcloud.nachrichten.postfach.osiv2.factory.V1ReplyMessageTestFactory; import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1ReplyMessage; -class ResponseMapperTest { +class Osi2ResponseMapperTest { @InjectMocks - private ResponseMapper mapper = Mappers.getMapper(ResponseMapper.class); + private Osi2ResponseMapper mapper = Mappers.getMapper(Osi2ResponseMapper.class); private V1ReplyMessage message = V1ReplyMessageTestFactory.create(); @DisplayName("map V1ReplyMessage to PostfachNachricht") diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java index 139ba192c9394ddb55d2657e094a2d9d15765866..c1abebba22f3e88935c0465e0bba99d6840a07e5 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java @@ -32,10 +32,10 @@ class PostfachApiFacadeServiceTest { MessageExchangeApi messageExchangeApi; @Mock - RequestMapper requestMapper; + Osi2RequestMapper osi2RequestMapper; @Mock - ResponseMapper responseMapper; + Osi2ResponseMapper osi2ResponseMapper; @DisplayName("send message") @Nested @@ -51,8 +51,8 @@ class PostfachApiFacadeServiceTest { @BeforeEach void mock() { - when(requestMapper.mapMailboxId(nachricht)).thenReturn(MAILBOX_ID); - when(requestMapper.mapOutSendMessageRequestV2(nachricht)).thenReturn(outSendMessageRequestV2); + when(osi2RequestMapper.mapMailboxId(nachricht)).thenReturn(MAILBOX_ID); + when(osi2RequestMapper.mapOutSendMessageRequestV2(nachricht)).thenReturn(outSendMessageRequestV2); when(messageExchangeApi.sendMessage(any(), any())).thenReturn(messageExchangeSendMessageResponse); } @@ -107,17 +107,17 @@ class PostfachApiFacadeServiceTest { @Test void shouldCallResponseMapper(){ when(messageExchangeApi.getMessage(any())).thenReturn(replyMessage); - when(responseMapper.toPostfachNachricht(any())).thenReturn(PostfachNachrichtTestFactory.create()); + when(osi2ResponseMapper.toPostfachNachricht(any())).thenReturn(PostfachNachrichtTestFactory.create()); postfachApiFacadeService.fetchMessageByGuid(receiveMessage); - verify(responseMapper).toPostfachNachricht(any()); + verify(osi2ResponseMapper).toPostfachNachricht(any()); } @Test void shouldReturnPostfachNachricht(){ when(messageExchangeApi.getMessage(any())).thenReturn(replyMessage); - when(responseMapper.toPostfachNachricht(any())).thenReturn(PostfachNachrichtTestFactory.create()); + when(osi2ResponseMapper.toPostfachNachricht(any())).thenReturn(PostfachNachrichtTestFactory.create()); var postfachNachricht = postfachApiFacadeService.fetchMessageByGuid(receiveMessage); diff --git a/src/test/resources/application-itcase.yml b/src/test/resources/application-itcase.yml index d8cacf79a13dd9feec526bea7afc6695e6f0b136..41e84786e9e76db63c2d6671a55ae56dddae6ea7 100644 --- a/src/test/resources/application-itcase.yml +++ b/src/test/resources/application-itcase.yml @@ -1,5 +1,5 @@ ozgcloud: - osiv2-postfach: + osiv2: enabled: true logging: level: