Skip to content
Snippets Groups Projects
Commit 2bba723e authored by OZGCloud's avatar OZGCloud
Browse files

OZG-5323 add it case

parent 774bd074
No related branches found
No related tags found
No related merge requests found
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.document;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.util.Map;
import java.util.Optional;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
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.test.annotation.DirtiesContext;
import de.ozgcloud.bescheid.common.callcontext.CallContextUser;
import de.ozgcloud.bescheid.common.callcontext.CurrentUserService;
import de.ozgcloud.common.test.DataITCase;
import de.ozgcloud.document.DocumentServiceGrpc.DocumentServiceBlockingStub;
import de.ozgcloud.vorgang.VorgangManagerServerApplication;
import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem;
import de.ozgcloud.vorgang.attached_item.VorgangAttachedItemTestFactory;
import io.grpc.StatusRuntimeException;
import net.devh.boot.grpc.client.inject.GrpcClient;
@SpringBootTest(classes = VorgangManagerServerApplication.class, properties = {
"grpc.server.inProcessName=test",
"grpc.server.port=-1",
"grpc.client.vorgang-manager.address=in-process:test",
"grpc.client.inProcess.address=in-process:test",
})
@DataITCase
@DirtiesContext
class DocumentGrpcServiceITCase {
@GrpcClient("inProcess")
private DocumentServiceBlockingStub documentServiceStub;
@Autowired
private MongoOperations mongoOperations;
@MockBean
private CurrentUserService currentUserService;
@Mock
private CallContextUser callContextUser;
@BeforeEach
void init() {
mongoOperations.dropCollection(VorgangAttachedItem.COLLECTION_NAME);
when(currentUserService.findUser()).thenReturn(Optional.of(callContextUser));
when(currentUserService.getUser()).thenReturn(callContextUser);
}
@Test
void shouldGetDocument() {
var documentId = saveDocument();
var response = documentServiceStub.getDocument(GrpcGetDocumentRequest.newBuilder().setId(documentId).build());
assertThat(response.hasDocument()).isTrue();
}
@Test
void shouldThrowExceptionWhenDocumentNotFound() {
saveDocument();
var request = GrpcGetDocumentRequest.newBuilder().setId("not-found").build();
Assertions.assertThrows(StatusRuntimeException.class, () -> documentServiceStub.getDocument(request));
}
private String saveDocument() {
var document = VorgangAttachedItemTestFactory.createBuilder()
.id(null)
.version(0)
.itemName(DocumentService.DOCUMENT_ITEM_NAME)
.item(Map.of(
Document.FIELD_DOCUMENT_TYPE, DocumentService.DOCUMENT_TYPE,
Document.FIELD_DOCUMENT_FILE, "file-id",
Document.FIELD_NACHRICHT_TEXT, "nachricht-text",
Document.FIELD_NACHRICHT_SUBJECT, "nachricht-subject"))
.build();
return mongoOperations.save(document, VorgangAttachedItem.COLLECTION_NAME).getId();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment