Skip to content
Snippets Groups Projects
Commit 10f47b83 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6465 create itcase for find rueckfragen header

parent ff672d1a
No related branches found
No related tags found
No related merge requests found
......@@ -24,7 +24,7 @@ public class ServiceKonto {
@Singular
private List<PostfachAddress> postfachAddresses;
static class ServiceKontoBuilder {
public static class ServiceKontoBuilder {
public ServiceKontoBuilder trustLevel(String trustLevel) {
validateTrustLevel(trustLevel);
......
package de.ozgcloud.nachrichten.antragraum;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.apache.xml.security.stax.ext.XMLSecurityConstants.DIRECTION;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.annotation.DirtiesContext;
import de.ozgcloud.common.test.DataITCase;
import de.ozgcloud.common.test.TestUtils;
import de.ozgcloud.nachrichten.postfach.PostfachAddress;
import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory;
import de.ozgcloud.nachrichten.postfach.osi.OsiPostfachProperties;
import de.ozgcloud.nachrichten.postfach.osi.ReplyOption;
import de.ozgcloud.vorgang.VorgangManagerServerApplication;
import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem;
import de.ozgcloud.vorgang.attached_item.VorgangAttachedItemTestFactory;
import de.ozgcloud.vorgang.servicekonto.PostfachAddressTestFactory;
import de.ozgcloud.vorgang.servicekonto.ServiceKonto;
import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory;
import de.ozgcloud.vorgang.vorgang.Vorgang;
import de.ozgcloud.vorgang.vorgang.VorgangHeadTestFactory;
import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
import io.grpc.stub.StreamObserver;
@SpringBootTest(classes = { VorgangManagerServerApplication.class, OsiPostfachProperties.class }, properties = {
"grpc.server.in-process-name=postfachitcase",
"ozgcloud.antragraum.url=https://localhost/dummy/antragraum",
"ozgcloud.antragraum.entityId=dummy-id",
"ozgcloud.antragraum.metadataUri=http://localhost/dummy/antragraum/uri",
"ozgcloud.antragraum.decryptionPrivateKey=dummyPrivateKey",
"ozgcloud.antragraum.decryptionCertificate=dummyCertificate",
"grpc.client.ozgcloud-command-manager.address=in-process:postfachitcase",
"grpc.client.command-manager.address=in-process:postfachitcase",
"grpc.client.info-manager.address=in-process:postfachitcase",
"grpc.client.vorgang-manager.address=in-process:postfachitcase",
})
@WithMockUser
@DataITCase
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
class AntragraumITCase {
@Autowired
private AntragraumGrpcService grpcService;
@Autowired
private MongoOperations mongoOperations;
@MockBean
private Saml2Decrypter decrypter;
@MockBean
private Saml2Verifier verifier;
@BeforeEach
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")
@Nested
class TestFindRueckfragen {
@Mock
private StreamObserver<GrpcFindRueckfragenResponse> responseObserver;
@Captor
private ArgumentCaptor<GrpcFindRueckfragenResponse> captor;
@BeforeEach
void mock() {
when(decrypter.decryptPostfachId(any())).thenReturn(PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
when(verifier.verify(any())).thenReturn(Collections.emptyList());
}
@Test
void shouldReturnOnMatchingTokenTrustLevel() {
when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_3.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();
}
@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() {
grpcService.findRueckfragen(
GrpcFindRueckfrageRequestTestFactory.createBuilder().setSamlToken(TestUtils.loadTextFile("SamlResponse.xml")).build(),
responseObserver);
verify(responseObserver).onNext(captor.capture());
return captor.getValue().getRueckfrageHeadList();
}
}
}
\ 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