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