Skip to content
Snippets Groups Projects
Commit 646284b3 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6465 add it case

parent 10f47b83
No related branches found
No related tags found
No related merge requests found
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment