diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java index 90353d16774020e054463f8194c3817f9413b8d4..81ff258399f0ffa813c0ac5837c83d4d5e8ec544 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java @@ -8,6 +8,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import org.apache.commons.lang3.StringUtils; import org.apache.xml.security.stax.ext.XMLSecurityConstants.DIRECTION; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -72,46 +73,6 @@ class AntragraumITCase { void prepareDatabase() { mongoOperations.dropCollection(Vorgang.COLLECTION_NAME); mongoOperations.dropCollection(VorgangAttachedItem.COLLECTION_NAME); - - var vorgang = mongoOperations.save(createVorgang(), Vorgang.COLLECTION_NAME); - mongoOperations.save(createPostfachNachrichtVorgangAttachedItem(vorgang.getId()), VorgangAttachedItem.COLLECTION_NAME); - } - - private Vorgang createVorgang() { - return VorgangTestFactory.createBuilder() - .id(null) - .header(VorgangHeadTestFactory.createBuilder().serviceKonto(createBayernIdTrustLevel3ServiceKonto()).build()) - .build(); - } - - private ServiceKonto createBayernIdTrustLevel3ServiceKonto() { - return ServiceKontoTestFactory.createBuilder().type("BayernID").trustLevel(TrustLevel.LEVEL_3.getValue()).build(); - } - - private VorgangAttachedItem createPostfachNachrichtVorgangAttachedItem(String vorgangId) { - return VorgangAttachedItemTestFactory.createBuilder() - .id(null) - .version(0) - .vorgangId(vorgangId) - .itemName("PostfachMail") - .client("OzgCloud_NachrichtenManager") - .item(createBayernIdPostfachNachrichtItem(vorgangId)) - .build(); - } - - private Map<String, Object> createBayernIdPostfachNachrichtItem(String vorgangId) { - var nachrichtItem = PostfachNachrichtTestFactory.asMap(); - nachrichtItem.put(PostfachNachricht.FIELD_DIRECTION, DIRECTION.OUT.name()); - nachrichtItem.put(PostfachNachricht.FIELD_REPLY_OPTION, ReplyOption.POSSIBLE); - nachrichtItem.put(PostfachNachricht.FIELD_VORGANG_ID, vorgangId); - nachrichtItem.put(PostfachNachricht.FIELD_POSTFACH_ID, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE); - nachrichtItem.put(PostfachNachricht.POSTFACH_ADDRESS_FIELD, Map.of( - PostfachAddress.TYPE_FIELD, 0, - PostfachAddress.VERSION_FIELD, 1, - PostfachAddress.IDENTIFIER_FIELD, - Map.of(PostfachNachricht.FIELD_POSTFACH_ID, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE), - PostfachAddress.SERVICEKONTO_TYPE_FIELD, "BayernID")); - return nachrichtItem; } @DisplayName("Find rueckfragen") @@ -130,37 +91,91 @@ class AntragraumITCase { when(verifier.verify(any())).thenReturn(Collections.emptyList()); } - @Test - void shouldReturnOnMatchingTokenTrustLevel() { - when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_3.getValue()); + @DisplayName("with nachrichten from different vorgaenge") + @Nested + class TestWithDifferentVorgangId { - var rueckfragen = findRueckfragen(); + private Vorgang vorgangTrustLevel3; + private Vorgang vorgangTrustLevel2; - assertThat(rueckfragen).isNotEmpty().hasSize(1); - assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue()); - assertThat(rueckfragen.get(0).getAccessible()).isTrue(); - } + @BeforeEach + void prepareDatabase() { + vorgangTrustLevel3 = mongoOperations.save(createVorgang(TrustLevel.LEVEL_3), Vorgang.COLLECTION_NAME); + mongoOperations.save(createPostfachNachrichtVorgangAttachedItem(vorgangTrustLevel3.getId()), VorgangAttachedItem.COLLECTION_NAME); - @Test - void shouldReturnOnLowerTokenTrustLevel() { - when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_1.getValue()); + vorgangTrustLevel2 = mongoOperations.save(createVorgang(TrustLevel.LEVEL_2), Vorgang.COLLECTION_NAME); + mongoOperations.save(createPostfachNachrichtVorgangAttachedItem(vorgangTrustLevel2.getId()), VorgangAttachedItem.COLLECTION_NAME); + } - var rueckfragen = findRueckfragen(); + @Test + void shouldHaveTrustLevelForVorgang() { + when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_4.getValue()); - assertThat(rueckfragen).isNotEmpty().hasSize(1); - assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue()); - assertThat(rueckfragen.get(0).getAccessible()).isFalse(); + var rueckfragen = findRueckfragen().stream() + .filter(rueckfrage -> StringUtils.equals(rueckfrage.getVorgangId(), vorgangTrustLevel3.getId())) + .toList(); + + assertThat(rueckfragen).isNotEmpty().hasSize(1); + assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue()); + assertThat(rueckfragen.get(0).getAccessible()).isTrue(); + } + + @Test + void shouldHaveTrustLevelForOtherVorgang() { + when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_1.getValue()); + + var rueckfragen = findRueckfragen().stream() + .filter(rueckfrage -> StringUtils.equals(rueckfrage.getVorgangId(), vorgangTrustLevel2.getId())) + .toList(); + + assertThat(rueckfragen).isNotEmpty().hasSize(1); + assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_2.getValue()); + assertThat(rueckfragen.get(0).getAccessible()).isFalse(); + } } - @Test - void shouldReturnOnHigherTokenTrustLevel() { - when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_4.getValue()); + @DisplayName("with nachrichten from one vorgang") + @Nested + class TestWithOneVorgangId { + + @BeforeEach + void prepareDatabase() { + var vorgang = mongoOperations.save(createVorgang(TrustLevel.LEVEL_3), Vorgang.COLLECTION_NAME); + mongoOperations.save(createPostfachNachrichtVorgangAttachedItem(vorgang.getId()), VorgangAttachedItem.COLLECTION_NAME); + } - var rueckfragen = findRueckfragen(); + @Test + void shouldReturnOnMatchingTokenTrustLevel() { + when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_3.getValue()); - assertThat(rueckfragen).isNotEmpty().hasSize(1); - assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue()); - assertThat(rueckfragen.get(0).getAccessible()).isTrue(); + var rueckfragen = findRueckfragen(); + + assertThat(rueckfragen).isNotEmpty().hasSize(1); + assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue()); + assertThat(rueckfragen.get(0).getAccessible()).isTrue(); + } + + @Test + void shouldReturnOnLowerTokenTrustLevel() { + when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_1.getValue()); + + var rueckfragen = findRueckfragen(); + + assertThat(rueckfragen).isNotEmpty().hasSize(1); + assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue()); + assertThat(rueckfragen.get(0).getAccessible()).isFalse(); + } + + @Test + void shouldReturnOnHigherTokenTrustLevel() { + when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_4.getValue()); + + var rueckfragen = findRueckfragen(); + + assertThat(rueckfragen).isNotEmpty().hasSize(1); + assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue()); + assertThat(rueckfragen.get(0).getAccessible()).isTrue(); + } } private List<GrpcRueckfrageHead> findRueckfragen() { @@ -171,4 +186,41 @@ class AntragraumITCase { return captor.getValue().getRueckfrageHeadList(); } } + + private Vorgang createVorgang(TrustLevel trustLevel) { + return VorgangTestFactory.createBuilder() + .id(null) + .header(VorgangHeadTestFactory.createBuilder().serviceKonto(createBayernIdServiceKonto(trustLevel)).build()) + .build(); + } + + private ServiceKonto createBayernIdServiceKonto(TrustLevel trustLevel) { + return ServiceKontoTestFactory.createBuilder().type("BayernID").trustLevel(trustLevel.getValue()).build(); + } + + private VorgangAttachedItem createPostfachNachrichtVorgangAttachedItem(String vorgangId) { + return VorgangAttachedItemTestFactory.createBuilder() + .id(null) + .version(0) + .vorgangId(vorgangId) + .itemName("PostfachMail") + .client("OzgCloud_NachrichtenManager") + .item(createBayernIdPostfachNachrichtItem(vorgangId)) + .build(); + } + + private Map<String, Object> createBayernIdPostfachNachrichtItem(String vorgangId) { + var nachrichtItem = PostfachNachrichtTestFactory.asMap(); + nachrichtItem.put(PostfachNachricht.FIELD_DIRECTION, DIRECTION.OUT.name()); + nachrichtItem.put(PostfachNachricht.FIELD_REPLY_OPTION, ReplyOption.POSSIBLE); + nachrichtItem.put(PostfachNachricht.FIELD_VORGANG_ID, vorgangId); + nachrichtItem.put(PostfachNachricht.FIELD_POSTFACH_ID, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE); + nachrichtItem.put(PostfachNachricht.POSTFACH_ADDRESS_FIELD, Map.of( + PostfachAddress.TYPE_FIELD, 0, + PostfachAddress.VERSION_FIELD, 1, + PostfachAddress.IDENTIFIER_FIELD, + Map.of(PostfachNachricht.FIELD_POSTFACH_ID, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE), + PostfachAddress.SERVICEKONTO_TYPE_FIELD, "BayernID")); + return nachrichtItem; + } } \ No newline at end of file