Skip to content

Commit f859ada

Browse files
authored
chore(dms): throw exception if DMS target key missing in metadata file (#315)
* chore(dms): handle dms target key missing in medata file * test(dms): handle dms target key missing in medata file
1 parent 2073756 commit f859ada

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

dms-service/src/main/java/de/muenchen/oss/swim/dms/application/usecase/helper/TargetResolverHelper.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,9 @@ public UseCaseType resolveTypeFromMetadataFile(final Metadata metadata) throws M
173173
// load value from metadata file
174174
final Map<String, String> indexFields = metadata.indexFields();
175175
final String metadataDmsTarget = indexFields.get(swimDmsProperties.getMetadataDmsTargetKey());
176+
if (StringUtils.isBlank(metadataDmsTarget)) {
177+
throw new MetadataException("DMS target key '%s' not found in metadata file or empty".formatted(swimDmsProperties.getMetadataDmsTargetKey()));
178+
}
176179
// resolve type from value
177180
try {
178181
final UseCaseType resolvedType = UseCaseType.valueOf(metadataDmsTarget.toUpperCase(Locale.ROOT));
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package de.muenchen.oss.swim.dms.application.usecase.helper;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertThrows;
5+
6+
import com.fasterxml.jackson.databind.ObjectMapper;
7+
import de.muenchen.oss.swim.dms.TestConstants;
8+
import de.muenchen.oss.swim.dms.application.port.out.DmsOutPort;
9+
import de.muenchen.oss.swim.dms.configuration.SwimDmsProperties;
10+
import de.muenchen.oss.swim.dms.domain.helper.DmsMetadataHelper;
11+
import de.muenchen.oss.swim.dms.domain.model.UseCaseType;
12+
import de.muenchen.oss.swim.libs.handlercore.domain.exception.MetadataException;
13+
import de.muenchen.oss.swim.libs.handlercore.domain.helper.PatternHelper;
14+
import de.muenchen.oss.swim.libs.handlercore.domain.model.Metadata;
15+
import java.util.Map;
16+
import org.junit.jupiter.api.Test;
17+
import org.junit.jupiter.api.extension.ExtendWith;
18+
import org.mockito.junit.jupiter.MockitoExtension;
19+
import org.springframework.beans.factory.annotation.Autowired;
20+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
21+
import org.springframework.boot.test.context.SpringBootTest;
22+
import org.springframework.test.context.ActiveProfiles;
23+
import org.springframework.test.context.bean.override.mockito.MockitoBean;
24+
25+
@SpringBootTest(
26+
classes = { SwimDmsProperties.class, TargetResolverHelper.class, ObjectMapper.class, DmsMetadataHelper.class, PatternHelper.class }
27+
)
28+
@EnableConfigurationProperties
29+
@ExtendWith(MockitoExtension.class)
30+
@ActiveProfiles(TestConstants.SPRING_TEST_PROFILE)
31+
class TargetResolverHelperTest {
32+
@Autowired
33+
private TargetResolverHelper targetResolverHelper;
34+
@MockitoBean
35+
private DmsOutPort dmsOutPort;
36+
37+
@Test
38+
void testResolveTypeFromMetadataFile() throws MetadataException {
39+
final Metadata metadata = new Metadata(null, Map.of("SWIM_DMS_Target", "inbox_incoming"));
40+
assertEquals(UseCaseType.INBOX_INCOMING, targetResolverHelper.resolveTypeFromMetadataFile(metadata));
41+
}
42+
43+
@Test
44+
void testResolveTypeFromMetadataFile_KeyMissing() {
45+
// empty map
46+
final Metadata metadata = new Metadata(null, Map.of());
47+
final MetadataException exception = assertThrows(MetadataException.class, () -> targetResolverHelper.resolveTypeFromMetadataFile(metadata));
48+
assertEquals("DMS target key 'SWIM_DMS_Target' not found in metadata file or empty", exception.getMessage());
49+
// empty value
50+
final Metadata metadata2 = new Metadata(null, Map.of("SWIM_DMS_Target", ""));
51+
final MetadataException exception2 = assertThrows(MetadataException.class, () -> targetResolverHelper.resolveTypeFromMetadataFile(metadata2));
52+
assertEquals("DMS target key 'SWIM_DMS_Target' not found in metadata file or empty", exception2.getMessage());
53+
}
54+
}

0 commit comments

Comments
 (0)