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
No related branches found
No related tags found
No related merge requests found
......@@ -5,8 +5,8 @@ import jakarta.validation.constraints.NotBlank;
import de.ozgcloud.xta.client.config.XtaClientConfig;
import de.ozgcloud.xta.client.core.WrappedXtaService;
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.XtaMessageAndTransportReport;
import genv3.de.xoev.transport.xta.x211.InvalidMessageIDException;
import genv3.de.xoev.transport.xta.x211.PermissionDeniedException;
import genv3.de.xoev.transport.xta.x211.XTAWSTechnicalProblemException;
......@@ -53,9 +53,18 @@ public class XtaClient {
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 {
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)
......
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 {
void shouldReturnMessage() {
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")
......
......@@ -21,6 +21,7 @@ import de.ozgcloud.xta.client.config.XtaClientConfig;
import de.ozgcloud.xta.client.core.WrappedXtaService;
import de.ozgcloud.xta.client.model.XtaMessage;
import de.ozgcloud.xta.client.model.XtaMessageMetaDataListing;
import de.ozgcloud.xta.client.model.XtaTransportReport;
import lombok.SneakyThrows;
@ExtendWith(MockitoExtension.class)
......@@ -128,16 +129,42 @@ class XtaClientTest {
@Mock
XtaMessage xtaMessage;
@DisplayName("should return")
@Test
@Mock
XtaTransportReport xtaTransportReport;
@BeforeEach
@SneakyThrows
void shouldReturn() {
void mock() {
doReturn(SELF_IDENTIFIER).when(client).deriveIdentifier(SELF_IDENTIFIER_VALUE);
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);
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