Skip to content
Snippets Groups Projects
Commit 887279f7 authored by Jan Zickermann's avatar Jan Zickermann
Browse files

OZG-6240 KOP-2627 Implement required getMessage behaviour

parent 95c4be7d
Branches
Tags
No related merge requests found
...@@ -5,8 +5,8 @@ import jakarta.validation.constraints.NotBlank; ...@@ -5,8 +5,8 @@ import jakarta.validation.constraints.NotBlank;
import de.ozgcloud.xta.client.config.XtaClientConfig; import de.ozgcloud.xta.client.config.XtaClientConfig;
import de.ozgcloud.xta.client.core.WrappedXtaService; import de.ozgcloud.xta.client.core.WrappedXtaService;
import de.ozgcloud.xta.client.model.XtaIdentifier; import de.ozgcloud.xta.client.model.XtaIdentifier;
import de.ozgcloud.xta.client.model.XtaMessage;
import de.ozgcloud.xta.client.model.XtaMessageMetaDataListing; import de.ozgcloud.xta.client.model.XtaMessageMetaDataListing;
import de.ozgcloud.xta.client.model.XtaMessageAndTransportReport;
import genv3.de.xoev.transport.xta.x211.InvalidMessageIDException; import genv3.de.xoev.transport.xta.x211.InvalidMessageIDException;
import genv3.de.xoev.transport.xta.x211.PermissionDeniedException; import genv3.de.xoev.transport.xta.x211.PermissionDeniedException;
import genv3.de.xoev.transport.xta.x211.XTAWSTechnicalProblemException; import genv3.de.xoev.transport.xta.x211.XTAWSTechnicalProblemException;
...@@ -53,9 +53,18 @@ public class XtaClient { ...@@ -53,9 +53,18 @@ public class XtaClient {
return service.getStatusList(clientIdentifier, config.getMaxListItems()); return service.getStatusList(clientIdentifier, config.getMaxListItems());
} }
public XtaMessage getMessage(@NotBlank String clientIdentifier, @NotBlank String messageId) public XtaMessageAndTransportReport getMessage(@NotBlank String clientIdentifier, @NotBlank String messageId)
throws XTAWSTechnicalProblemException, PermissionDeniedException, InvalidMessageIDException { throws XTAWSTechnicalProblemException, PermissionDeniedException, InvalidMessageIDException {
return service.getMessage(messageId, deriveIdentifier(clientIdentifier)); var identifier = deriveIdentifier(clientIdentifier);
var message = service.getMessage(messageId, identifier);
service.close(messageId, identifier);
var transportReport = service.getTransportReport(messageId, identifier);
return XtaMessageAndTransportReport.builder()
.message(message)
.transportReport(transportReport)
.build();
} }
public void close(@NotBlank String clientIdentifier, @NotBlank String messageId) public void close(@NotBlank String clientIdentifier, @NotBlank String messageId)
......
package de.ozgcloud.xta.client.model;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
@Builder
public record XtaMessageAndTransportReport(
@NotNull @Valid XtaMessage message,
@NotNull @Valid XtaTransportReport transportReport
) {
}
...@@ -92,7 +92,27 @@ class XtaClientITCase { ...@@ -92,7 +92,27 @@ class XtaClientITCase {
void shouldReturnMessage() { void shouldReturnMessage() {
var result = client.getMessage(CLIENT_IDENTIFIER1.value(), messageId); var result = client.getMessage(CLIENT_IDENTIFIER1.value(), messageId);
assertThat(result.metaData().messageId()).isEqualTo(messageId); assertThat(result.message().metaData().messageId()).isEqualTo(messageId);
}
@DisplayName("should return transport report")
@Test
@SneakyThrows
void shouldReturnTransportReport() {
var result = client.getMessage(CLIENT_IDENTIFIER1.value(), messageId);
assertThat(result.transportReport().metaData().messageId()).isEqualTo(messageId);
}
@DisplayName("should throw invalid message id exception on second call due to closed message")
@Test
@SneakyThrows
void shouldThrowInvalidMessageIdExceptionOnSecondCallDueToClosedMessage() {
client.getMessage(CLIENT_IDENTIFIER1.value(), messageId);
assertThatThrownBy(() -> client.getMessage(CLIENT_IDENTIFIER1.value(), messageId))
.isInstanceOf(InvalidMessageIDException.class);
} }
@DisplayName("should throw invalid message id exception for modified message id") @DisplayName("should throw invalid message id exception for modified message id")
......
...@@ -21,6 +21,7 @@ import de.ozgcloud.xta.client.config.XtaClientConfig; ...@@ -21,6 +21,7 @@ import de.ozgcloud.xta.client.config.XtaClientConfig;
import de.ozgcloud.xta.client.core.WrappedXtaService; import de.ozgcloud.xta.client.core.WrappedXtaService;
import de.ozgcloud.xta.client.model.XtaMessage; import de.ozgcloud.xta.client.model.XtaMessage;
import de.ozgcloud.xta.client.model.XtaMessageMetaDataListing; import de.ozgcloud.xta.client.model.XtaMessageMetaDataListing;
import de.ozgcloud.xta.client.model.XtaTransportReport;
import lombok.SneakyThrows; import lombok.SneakyThrows;
@ExtendWith(MockitoExtension.class) @ExtendWith(MockitoExtension.class)
...@@ -128,16 +129,42 @@ class XtaClientTest { ...@@ -128,16 +129,42 @@ class XtaClientTest {
@Mock @Mock
XtaMessage xtaMessage; XtaMessage xtaMessage;
@DisplayName("should return") @Mock
@Test XtaTransportReport xtaTransportReport;
@BeforeEach
@SneakyThrows @SneakyThrows
void shouldReturn() { void mock() {
doReturn(SELF_IDENTIFIER).when(client).deriveIdentifier(SELF_IDENTIFIER_VALUE); doReturn(SELF_IDENTIFIER).when(client).deriveIdentifier(SELF_IDENTIFIER_VALUE);
when(service.getMessage(MESSAGE_ID, SELF_IDENTIFIER)).thenReturn(xtaMessage); when(service.getMessage(MESSAGE_ID, SELF_IDENTIFIER)).thenReturn(xtaMessage);
when(service.getTransportReport(MESSAGE_ID, SELF_IDENTIFIER)).thenReturn(xtaTransportReport);
}
@DisplayName("should call close")
@Test
@SneakyThrows
void shouldCallClose() {
client.getMessage(SELF_IDENTIFIER_VALUE, MESSAGE_ID);
verify(service).close(MESSAGE_ID, SELF_IDENTIFIER);
}
@DisplayName("should return with message")
@Test
@SneakyThrows
void shouldReturn() {
var result = client.getMessage(SELF_IDENTIFIER_VALUE, MESSAGE_ID);
assertThat(result.message()).isEqualTo(xtaMessage);
}
@DisplayName("should return with transport report")
@Test
@SneakyThrows
void shouldReturnWithTransportReport() {
var result = client.getMessage(SELF_IDENTIFIER_VALUE, MESSAGE_ID); var result = client.getMessage(SELF_IDENTIFIER_VALUE, MESSAGE_ID);
assertThat(result).isEqualTo(xtaMessage); assertThat(result.transportReport()).isEqualTo(xtaTransportReport);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment