Skip to content
Snippets Groups Projects
Commit 3a35c288 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-5682 throw exception on wrong postfach address type

parent c430992b
Branches
Tags
No related merge requests found
......@@ -2,4 +2,7 @@ package de.ozgcloud.nachrichten.postfach;
public interface PostfachAddressIdentifier {
default boolean isStringBasedIdentifier() {
return false;
}
}
......@@ -7,10 +7,12 @@ import org.springframework.stereotype.Service;
import de.ozgcloud.nachrichten.NachrichtenManagerProperties;
import de.ozgcloud.nachrichten.antragraum.AntragraumProperties;
import de.ozgcloud.nachrichten.postfach.PostfachAddress;
import de.ozgcloud.nachrichten.postfach.PostfachException;
import de.ozgcloud.nachrichten.postfach.PostfachMessageCode;
import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
import de.ozgcloud.nachrichten.postfach.StringBasedIdentifier;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
......@@ -40,14 +42,18 @@ public class InfoManagerService {
return InfoManagerRequest.builder()
.nachrichtId(postfachNachricht.getId())
.vorgangId(postfachNachricht.getVorgangId())
.postfachId(getPostfachId(postfachNachricht))
.postfachId(getPostfachId(postfachNachricht.getPostfachAddress()))
.nachrichtenManagerUrl(nachrichtenManagerProperties.getAddress())
.build();
}
String getPostfachId(PostfachNachricht nachricht) {
// FIXME - wie gehen wir mit anderen Typen um?
var identifier = (StringBasedIdentifier) nachricht.getPostfachAddress().getIdentifier();
return identifier.getPostfachId();
String getPostfachId(@NonNull PostfachAddress address) {
var postfachIdentifier = address.getIdentifier();
if (postfachIdentifier.isStringBasedIdentifier()) {
return ((StringBasedIdentifier) postfachIdentifier).getPostfachId();
} else {
throw new IllegalStateException("Illegal Type of Postfach Identifier: " + postfachIdentifier.getClass().getName());
}
}
}
......@@ -8,4 +8,9 @@ import lombok.Getter;
public class StringBasedIdentifier implements PostfachAddressIdentifier {
private String postfachId;
@Override
public boolean isStringBasedIdentifier() {
return true;
}
}
......@@ -12,6 +12,8 @@ import org.mockito.Mock;
import org.mockito.Spy;
import de.ozgcloud.nachrichten.NachrichtenManagerProperties;
import de.ozgcloud.nachrichten.postfach.PostfachAddressIdentifier;
import de.ozgcloud.nachrichten.postfach.PostfachAddressTestFactory;
import de.ozgcloud.nachrichten.postfach.PostfachException;
import de.ozgcloud.nachrichten.postfach.PostfachMessageCode;
import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
......@@ -99,6 +101,26 @@ class InfoManagerServiceTest {
return service.builInfomanagerRequest(postfachNachricht);
}
}
}
@Nested
class TestGetPostfachId {
@Test
void shouldReturnId() {
var address = PostfachAddressTestFactory.create();
var id = service.getPostfachId(address);
assertThat(id).isEqualTo(PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
}
@Test
void shouldThrowExceptionForUnkownIdentifer() {
var identifier = new PostfachAddressIdentifier() {
};
var address = PostfachAddressTestFactory.createBuilder().identifier(identifier).build();
assertThatThrownBy(() -> service.getPostfachId(address)).isInstanceOf(IllegalStateException.class);
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment