Skip to content
Snippets Groups Projects
Commit 469cb79c authored by OZGCloud's avatar OZGCloud
Browse files

Merge pull request 'OZG-6636-NachrichtWirdNichtAngezeigt' (#445) from...

Merge pull request 'OZG-6636-NachrichtWirdNichtAngezeigt' (#445) from OZG-6636-NachrichtWirdNichtAngezeigt into master

Reviewed-on: https://git.ozg-sh.de/ozgcloud-app/vorgang-manager/pulls/445


Reviewed-by: default avatarOZGCloud <ozgcloud@mgm-tp.com>
parents da3b1636 922ef498
No related branches found
No related tags found
No related merge requests found
Showing
with 50 additions and 28 deletions
......@@ -3,13 +3,17 @@ package de.ozgcloud.vorgang.servicekonto;
import java.util.List;
import java.util.Set;
import jakarta.validation.constraints.NotEmpty;
import org.apache.commons.lang3.StringUtils;
import org.springframework.validation.annotation.Validated;
import lombok.Builder;
import lombok.Getter;
import lombok.Singular;
import lombok.extern.log4j.Log4j2;
@Validated
@Getter
@Builder
@Log4j2
......@@ -21,6 +25,8 @@ public class ServiceKonto {
private String type;
private String trustLevel;
@NotEmpty
@Singular
private List<PostfachAddress> postfachAddresses;
......
......@@ -26,11 +26,16 @@ package de.ozgcloud.vorgang.vorgang;
import java.util.List;
import java.util.Map;
import jakarta.validation.Valid;
import org.springframework.validation.annotation.Validated;
import lombok.Builder;
import lombok.Getter;
import lombok.Singular;
import lombok.ToString;
@Validated
@ToString(onlyExplicitlyIncluded = true)
@Getter
@Builder(toBuilder = true)
......@@ -39,6 +44,7 @@ public class Eingang {
@ToString.Include
private String id;
@Valid
@ToString.Include
private EingangHeader header;
private Antragsteller antragsteller;
......
......@@ -25,11 +25,16 @@ package de.ozgcloud.vorgang.vorgang;
import java.time.ZonedDateTime;
import jakarta.validation.Valid;
import org.springframework.validation.annotation.Validated;
import de.ozgcloud.vorgang.servicekonto.ServiceKonto;
import lombok.Builder;
import lombok.Getter;
import lombok.ToString;
@Validated
@ToString
@Getter
@Builder
......@@ -44,5 +49,6 @@ public class EingangHeader {
private String vorgangNummer;
private String sender;
@Valid
private ServiceKonto serviceKonto;
}
\ No newline at end of file
......@@ -35,7 +35,7 @@ import net.devh.boot.grpc.server.service.GrpcService;
@GrpcService
@RequiredArgsConstructor
class GrpcVorgangService extends VorgangServiceGrpc.VorgangServiceImplBase {
class VorgangGrpcService extends VorgangServiceGrpc.VorgangServiceImplBase {
private final VorgangService vorgangService;
private final VorgangHeaderService vorgangHeaderService;
......
......@@ -30,6 +30,8 @@ import java.util.Map.Entry;
import java.util.Optional;
import java.util.stream.Stream;
import jakarta.validation.Valid;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
......@@ -37,6 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import de.ozgcloud.command.Command;
import de.ozgcloud.command.VorgangCreatedEvent;
......@@ -47,6 +50,7 @@ import de.ozgcloud.vorgang.common.errorhandling.NotFoundException;
import de.ozgcloud.vorgang.servicekonto.ServiceKonto;
import lombok.NonNull;
@Validated
@Service
public class VorgangService {
......@@ -72,7 +76,7 @@ public class VorgangService {
@Autowired
private VorgangStubMapper stubMapper;
public Vorgang startCreation(Eingang eingang) {
public Vorgang startCreation(@Valid Eingang eingang) {
var mappedEingang = kopControlDataMapper.moveLabelsToControlData(eingang);
return repository.save(buildVorgang(mappedEingang, true));
......
......@@ -27,14 +27,11 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
......@@ -42,32 +39,17 @@ 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.ITCase;
import de.ozgcloud.vorgang.callcontext.CallContextUserTestFactory;
import de.ozgcloud.vorgang.callcontext.CurrentUserService;
import de.ozgcloud.vorgang.clientattribute.ClientAttribute;
import de.ozgcloud.vorgang.clientattribute.ClientAttributeTestFactory;
import de.ozgcloud.vorgang.clientattribute.ClientAttributesMap;
import de.ozgcloud.vorgang.clientattribute.ClientAttributesMapTestFactory;
import de.ozgcloud.vorgang.common.GrpcQueryOperator;
import de.ozgcloud.vorgang.common.db.CriteriaUtil;
import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory;
import de.ozgcloud.vorgang.common.grpc.GrpcFormFieldTestFactory;
import de.ozgcloud.vorgang.common.grpc.GrpcSubFormTestFactory;
import de.ozgcloud.vorgang.common.operator.OperatorBuilder;
import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
import io.grpc.stub.StreamObserver;
import net.devh.boot.grpc.client.inject.GrpcClient;
@ITCase
class GrpcVorgangServiceITCase {
class VorgangGrpcServiceITCase {
static final String VALUE_KEY = "value";
static final String LABEL_KEY = "label";
......@@ -97,7 +79,7 @@ class GrpcVorgangServiceITCase {
private static final String TITLE_SUBFORM_3 = "SUBFORM_3";
@Autowired
private GrpcVorgangService grpcVorgangService;
private VorgangGrpcService grpcVorgangService;
@MockBean
private VorgangService service;
......@@ -117,7 +99,7 @@ class GrpcVorgangServiceITCase {
void shouldKeepFieldsOrder() {
var grpcFormData = GrpcFormData.newBuilder().addAllField(formFields).build();
Map<String, Object> formData = startCreation(grpcFormData);
var formData = startCreation(grpcFormData);
assertThat(removeControlData(formData)).containsExactly(
entry(NAME_FIELD_1, FIELD_1),
......@@ -131,7 +113,7 @@ class GrpcVorgangServiceITCase {
.addForm(GrpcSubFormTestFactory.createBuilder().setTitle(TITLE_SUBFORM_2))
.addForm(GrpcSubFormTestFactory.createBuilder().setTitle(TITLE_SUBFORM_3)).build();
Map<String, Object> formData = startCreation(grpcFormData);
var formData = startCreation(grpcFormData);
verifySubFormOrder(formData, TITLE_SUBFORM_1, TITLE_SUBFORM_2, TITLE_SUBFORM_3);
}
......
......@@ -51,7 +51,7 @@ import de.ozgcloud.vorgang.collaboration.GrpcCollaborationRequestTestFactory;
import de.ozgcloud.vorgang.collaboration.GrpcCreateCollaborationVorgangResponseTestFactory;
import io.grpc.stub.StreamObserver;
class GrpcVorgangServiceTest {
class VorgangGrpcServiceTest {
private static final int LIMIT = 10;
private static final int OFFSET = 0;
......@@ -59,7 +59,7 @@ class GrpcVorgangServiceTest {
@Spy
@InjectMocks
private GrpcVorgangService service;
private VorgangGrpcService service;
@Mock
private VorgangService vorgangService;
@Mock
......
......@@ -52,7 +52,7 @@ import io.grpc.stub.StreamObserver;
class VorgangITCase {
@Autowired
private GrpcVorgangService service;
private VorgangGrpcService service;
@Autowired
private MongoOperations mongoOperations;
......
......@@ -29,6 +29,8 @@ import static org.mockito.Mockito.*;
import java.util.List;
import jakarta.validation.ConstraintViolationException;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
......@@ -40,6 +42,7 @@ import de.ozgcloud.common.test.DataITCase;
import de.ozgcloud.notification.antragsteller.AntragstellerNotificationEventListener;
import de.ozgcloud.notification.user.UserNotificationEventListener;
import de.ozgcloud.vorgang.command.CommandService;
import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory;
@DataITCase
@WithMockUser
......@@ -80,5 +83,20 @@ class VorgangServiceITCase {
verify(antragstellerNotificationEventListener, timeout(60000)).onVorgangCreated(any());
verify(userNotificationEventListener, timeout(60000)).onVorgangCreated(any());
}
@DisplayName("validation")
@Nested
class TestValidation {
@DisplayName("should be invalid on missing postfachAddress in serviceKonto")
@Test
void shouldBeInvalidOnMissingPostfachAddress() {
var eingang = EingangTestFactory.createBuilder().header(EingangHeaderTestFactory.createBuilder()
.serviceKonto(ServiceKontoTestFactory.createBuilder().clearPostfachAddresses().build()).build())
.build();
assertThatThrownBy(() -> vorgangService.startCreation(eingang)).isInstanceOf(ConstraintViolationException.class);
}
}
}
}
\ 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