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

OZG-6636 add validation for missing postfachAddress in serviceKonto

parent 91e445a9
No related branches found
No related tags found
No related merge requests found
...@@ -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,14 @@ package de.ozgcloud.vorgang.vorgang; ...@@ -26,11 +26,14 @@ package de.ozgcloud.vorgang.vorgang;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
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)
......
...@@ -25,11 +25,14 @@ package de.ozgcloud.vorgang.vorgang; ...@@ -25,11 +25,14 @@ package de.ozgcloud.vorgang.vorgang;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
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
......
...@@ -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,29 +39,14 @@ import org.mockito.ArgumentCaptor; ...@@ -42,29 +39,14 @@ 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 VorgangGrpcServiceITCase { class VorgangGrpcServiceITCase {
...@@ -117,7 +99,7 @@ class VorgangGrpcServiceITCase { ...@@ -117,7 +99,7 @@ class VorgangGrpcServiceITCase {
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 VorgangGrpcServiceITCase { ...@@ -131,7 +113,7 @@ class VorgangGrpcServiceITCase {
.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);
} }
......
...@@ -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