diff --git a/goofy-server/pom.xml b/goofy-server/pom.xml index 83e053c6e2423cb4ca81640b482bf1b7ece138f0..6ee1132ae1e6d5f1a1135113447693eee1645513 100644 --- a/goofy-server/pom.xml +++ b/goofy-server/pom.xml @@ -115,6 +115,10 @@ <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </dependency> + <dependency> + <groupId>commons-beanutils</groupId> + <artifactId>commons-beanutils</artifactId> + </dependency> <!-- Logging --> <dependency> diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBody.java b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBody.java new file mode 100644 index 0000000000000000000000000000000000000000..4f83dd5f23760ec3717d46cab3468470b775fe46 --- /dev/null +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBody.java @@ -0,0 +1,17 @@ +package de.itvsh.goofy.common.command; + +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonSubTypes.Type; + +import de.itvsh.goofy.postfach.PostfachMessage; +import de.itvsh.goofy.vorgang.AssignUserCommandBody; +import de.itvsh.goofy.vorgang.RedirectRequest; + +@JsonSubTypes({ + @Type(value = PostfachMessage.class, name = "SEND_POSTFACH_MESSAGE"), + @Type(value = AssignUserCommandBody.class, name = "ASSIGN_USER"), + @Type(value = RedirectRequest.class, name = "REDIRECT_VORGANG") +}) +public interface CommandBody { + +} diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBodyMapper.java b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBodyMapper.java index f8ebfdf916314e4d83ae0e6340914350849c55b6..c8fef061f7e342f354fa010925022c6e195e7aaa 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBodyMapper.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandBodyMapper.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; +import org.apache.commons.beanutils.BeanMap; import org.mapstruct.Mapper; import de.itvsh.ozg.pluto.grpc.command.GrpcCommandBody; @@ -27,12 +28,19 @@ public interface CommandBodyMapper { return builder.build(); } - default List<GrpcCommandBodyField> mapToBodyFields(Map<String, String> bodyMap) { + default List<GrpcCommandBodyField> mapToBodyFields(CommandBody body) { + if (Objects.isNull(body)) + return Collections.emptyList(); + + return mapToBodyFields(new BeanMap(body)); + }; + + default List<GrpcCommandBodyField> mapToBodyFields(Map<Object, Object> bodyMap) { if (Objects.isNull(bodyMap)) return Collections.emptyList(); return bodyMap.entrySet().stream() - .map(entry -> GrpcCommandBodyField.newBuilder().setName(entry.getKey()).setValue(entry.getValue()).build()) + .map(entry -> GrpcCommandBodyField.newBuilder().setName(entry.getKey().toString()).setValue(entry.getValue().toString()).build()) .collect(Collectors.toList()); } diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandController.java b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandController.java index ab980cf297cad47b2383fac17aa0c8a7b4a9d98f..052ec3a646d5d35ad3407df29297f29cfc597498 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandController.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CommandController.java @@ -2,14 +2,8 @@ package de.itvsh.goofy.common.command; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; import java.util.Set; -import java.util.stream.Collectors; -import org.apache.commons.lang3.tuple.Pair; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.hateoas.CollectionModel; import org.springframework.hateoas.EntityModel; @@ -27,7 +21,6 @@ import org.springframework.web.bind.annotation.RestController; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import de.itvsh.goofy.common.LinkedResourceDesiralizer; import lombok.Getter; import lombok.extern.log4j.Log4j2; @@ -93,38 +86,7 @@ public class CommandController { } CreateCommand prepareCommandBody(CreateCommand command) { - return command.toBuilder().body(mapBody(command)).build(); - } - - Map<String, String> mapBody(CreateCommand command) { - var bodyMap = bodyProcessor(Optional.ofNullable(command.getBody())); - addPostfachMessageToBody(bodyMap, command); - return bodyMap; - } - - private Map<String, String> bodyProcessor(Optional<Map<String, String>> bodyMap) { - return bodyMap.map(map -> map.entrySet().stream() - .map(entry -> Pair.of(entry.getKey(), processValue(entry.getKey(), entry.getValue()))) - .collect(Collectors.toMap(Pair::getKey, Pair::getValue))).orElse(null); - } - - private String processValue(String key, String value) { - if (PARSE_URI_BODY_FIELDS.contains(key)) { - return LinkedResourceDesiralizer.extractStringId(value); - } - return value; - } - - private void addPostfachMessageToBody(Map<String, String> bodyMap, CreateCommand command) { - if (!Objects.isNull(command.getPostfachMessage())) { - var objAsJson = getObjectAsJson(command.getPostfachMessage()); - if (!Objects.isNull(objAsJson)) { - if (Objects.isNull(bodyMap)) { - bodyMap = new HashMap<>(); - } - bodyMap.put("postfachMessage", objAsJson); - } - } + return command; } private String getObjectAsJson(Object obj) { diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CreateCommand.java b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CreateCommand.java index a5dfb1e94503f066f8b7e0049d9a7c02de6121e5..dc95f442faca8107937624d6a7c8bfd28ff36f47 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/command/CreateCommand.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/command/CreateCommand.java @@ -1,10 +1,11 @@ package de.itvsh.goofy.common.command; -import java.util.Map; - import javax.validation.Valid; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonTypeInfo.As; +import com.fasterxml.jackson.annotation.JsonTypeInfo.Id; import de.itvsh.goofy.common.user.UserId; import de.itvsh.goofy.postfach.PostfachMessage; @@ -37,5 +38,7 @@ public class CreateCommand { @Valid private PostfachMessage postfachMessage; - private Map<String, String> body; + @Valid + @JsonTypeInfo(use = Id.NAME, include = As.EXTERNAL_PROPERTY, property = "order") + private CommandBody body; } \ No newline at end of file diff --git a/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachMessage.java b/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachMessage.java index a3898188467a714c7543c445f01f892b98dedfb7..da9c79dca92fd70b188b9977d45ecdcf4b3e9afa 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachMessage.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachMessage.java @@ -4,6 +4,7 @@ import static de.itvsh.goofy.common.ValidationMessageCodes.*; import javax.validation.constraints.NotEmpty; +import de.itvsh.goofy.common.command.CommandBody; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; @@ -16,14 +17,13 @@ import lombok.ToString; @ToString @NoArgsConstructor(access = AccessLevel.PRIVATE) @AllArgsConstructor(access = AccessLevel.PUBLIC) -public class PostfachMessage { +public class PostfachMessage implements CommandBody { - private PostfachMessageReply reply; - - @NotEmpty(message = FIELD_IS_EMPTY) - private String receiver; + private PostfachMessageReply replyOption; @NotEmpty(message = FIELD_IS_EMPTY) private String subject; + private String mailBody; + } \ No newline at end of file diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/AssignUserCommandBody.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/AssignUserCommandBody.java new file mode 100644 index 0000000000000000000000000000000000000000..78cd9c59150d5d6743bf0b23dd6909fca49f7261 --- /dev/null +++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/AssignUserCommandBody.java @@ -0,0 +1,14 @@ +package de.itvsh.goofy.vorgang; + +import de.itvsh.goofy.common.LinkedResource; +import de.itvsh.goofy.common.command.CommandBody; +import de.itvsh.goofy.common.user.UserId; +import de.itvsh.goofy.common.user.UserProfileController; +import lombok.Getter; + +@Getter +public class AssignUserCommandBody implements CommandBody { + + @LinkedResource(controllerClass = UserProfileController.class) + private UserId assignedTo; +} diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java index b963b7d3d11356b19c29bc6ea436ec9f69304493..d63add542e2af72acd08d8c8acff6d735ab5fbe6 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandBodyMapperTest.java @@ -37,13 +37,17 @@ class CommandBodyMapperTest { assertThat(result.getFieldList().get(0).getValue()).isEqualTo("VALUE"); } + private Map<String, String> buildBodyMap() { + return Map.of(FIELD, VALUE); + } + } @Nested class TestMapToBodyFields { @Test void shouldReturnEmptyListOnNull() { - var result = mapper.mapToBodyFields(null); + var result = mapper.mapToBodyFields((CommandBody) null); assertThat(result).isEmpty(); } @@ -56,10 +60,10 @@ class CommandBodyMapperTest { assertThat(result.get(0).getName()).isEqualTo(FIELD); assertThat(result.get(0).getValue()).isEqualTo(VALUE); } - } - private Map<String, String> buildBodyMap() { - return Map.of(FIELD, VALUE); + private Map<Object, Object> buildBodyMap() { + return Map.of(FIELD, VALUE); + } } @Nested diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerITCase.java b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerITCase.java index 6425c9ccceb1ef216b1c9c0c3836580a41807afa..5ff6f2879b2103007b26ae731df97091e9d5c9ab 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerITCase.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerITCase.java @@ -1,5 +1,6 @@ package de.itvsh.goofy.common.command; +import static de.itvsh.goofy.TestUtils.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; @@ -16,12 +17,16 @@ import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; +import de.itvsh.goofy.TestUtils; import de.itvsh.goofy.common.ValidationMessageCodes; import de.itvsh.goofy.postfach.PostfachMessage; import de.itvsh.goofy.postfach.PostfachMessageTestFactory; import de.itvsh.goofy.vorgang.RedirectRequest; import de.itvsh.goofy.vorgang.RedirectRequestTestFactory; +//TODO Testzuschnitt korrigieren +// Validierungstest entweder in einen CommandServiceITCase oder einen CommandITCase umziehen + @AutoConfigureMockMvc @SpringBootTest @WithMockUser @@ -75,7 +80,7 @@ class CommandControllerITCase { private final String FIELD = "password"; @Test - void shouldReturnErrorOnNullPassword() throws Exception { + void shouldReturnErrortnNullPassword() throws Exception { String content = buildRedirectRequestWithPassword(null); doRequest(content).andExpect(status().isUnprocessableEntity()) @@ -108,45 +113,17 @@ class CommandControllerITCase { @Nested class TestPostfachMessageValidation { - @WithMockUser - @Nested - class TestReceiverValidation { - - @Test - void shouldReturnErrorOnNullReceiver() throws Exception { - String content = buildPostfachMessageWithReceiver(null); - - doRequest(content).andExpect(status().isUnprocessableEntity()) - .andExpect(jsonPath("$.issues.length()").value(1)) - .andExpect(jsonPath("$.issues.[0].field").value("command.postfachMessage.receiver")) - .andExpect(jsonPath("$.issues.[0].messageCode").value(ValidationMessageCodes.FIELD_IS_EMPTY)); - } - - @Test - void shouldProceedOnValidReceiver() throws Exception { - when(remoteService.createCommand(any(CreateCommand.class), anyLong())).thenReturn(CommandTestFactory.create()); - - String content = buildPostfachMessageContent(PostfachMessageTestFactory.create()); - - doRequest(content).andExpect(status().isCreated()); - } - - private String buildPostfachMessageWithReceiver(String receiver) { - return buildPostfachMessageContent(PostfachMessageTestFactory.createBuilder().receiver(receiver).build()); - } - } - @WithMockUser @Nested class TestSubjectValidation { @Test void shouldReturnErrorOnNullSubject() throws Exception { - String content = buildPostfachMessageWithSubject(null); + String content = buildPostfachMessageContent(PostfachMessageTestFactory.createBuilder().subject(null).build()); doRequest(content).andExpect(status().isUnprocessableEntity()) .andExpect(jsonPath("$.issues.length()").value(1)) - .andExpect(jsonPath("$.issues.[0].field").value("command.postfachMessage.subject")) + .andExpect(jsonPath("$.issues.[0].field").value("command.body.subject")) .andExpect(jsonPath("$.issues.[0].messageCode").value(ValidationMessageCodes.FIELD_IS_EMPTY)); } @@ -159,15 +136,15 @@ class CommandControllerITCase { doRequest(content).andExpect(status().isCreated()); } - private String buildPostfachMessageWithSubject(String receiver) { - return buildPostfachMessageContent(PostfachMessageTestFactory.createBuilder().subject(receiver).build()); + private String buildPostfachMessageContent(PostfachMessage postfachMessage) { + return TestUtils.loadTextFile("jsonTemplates/command/createCommandWithPostfachMessage.json.tmpl", + CommandOrder.SEND_POSTFACH_MESSAGE.name(), + PostfachMessageTestFactory.REPLY_OPTION.name(), + addQuote(postfachMessage.getSubject()), + postfachMessage.getMailBody().toString()); } } - private String buildPostfachMessageContent(PostfachMessage postfachMessage) { - return CommandTestFactory - .createPostfachMessageContent(CommandTestFactory.createCreateCommandBuilder().postfachMessage(postfachMessage).build()); - } } ResultActions doRequest(String content) throws Exception { diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerTest.java index 1576df2f664816bc24c23c65263b7cd1c27f87a7..f19170b288b68e52128f918db05702342ff3a7f5 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandControllerTest.java @@ -5,6 +5,7 @@ import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import java.util.stream.Stream; @@ -25,6 +26,7 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders; import de.itvsh.goofy.TestUtils; import de.itvsh.goofy.common.command.CommandController.CommandByRelationController; import de.itvsh.goofy.common.errorhandling.ExceptionController; +import de.itvsh.goofy.postfach.PostfachMessageTestFactory; import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory; class CommandControllerTest { @@ -161,16 +163,42 @@ class CommandControllerTest { .andExpect(header().stringValues("location", "http://localhost" + COMMANDS_PATH + "/" + CommandTestFactory.ID)); } + @Nested + @DisplayName("CreateCommand with postfach mail") + class TestCommandWithPostfachMail { + + @Test + void shouldHavePostfachMail() throws Exception { + doRequest(TestUtils.loadTextFile("jsonTemplates/command/createCommandWithPostfachMessage.json.tmpl", + CommandOrder.SEND_POSTFACH_MESSAGE.name(), + PostfachMessageTestFactory.REPLY_OPTION.name(), + TestUtils.addQuote(PostfachMessageTestFactory.SUBJECT), + PostfachMessageTestFactory.MAIL_BODY)); + + verify(service).createCommand(anyString(), anyString(), anyLong(), createCommandCaptor.capture()); + assertThat(createCommandCaptor.getValue()).extracting(CreateCommand::getBody).usingRecursiveComparison() + .isEqualTo(PostfachMessageTestFactory.create()); + } + } + private ResultActions doRequest() throws Exception { + return doRequest( + TestUtils.loadTextFile("jsonTemplates/command/createVorgangCommand.json.tmpl", CommandOrder.VORGANG_ANNEHMEN.name())); + } + + private ResultActions doRequest(String content) throws Exception { return mockMvc .perform(post(CommandByRelationController.COMMAND_BY_RELATION_AND_VERSION_PATH, VorgangHeaderTestFactory.ID, CommandTestFactory.RELATION_ID, VorgangHeaderTestFactory.VERSION) .contentType(MediaType.APPLICATION_JSON) - .content(TestUtils.loadTextFile("jsonTemplates/command/createVorgangCommand.json.tmpl", - CommandOrder.VORGANG_ANNEHMEN.name()))) + .characterEncoding("UTF-8") + .content(content)) + .andDo(print()) .andExpect(status().is2xxSuccessful()); } + } + } @Nested diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandITCase.java b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandITCase.java index 886dc783922d8dcddb51f54a66bd0a0421ad7e9d..88e0201c8bf9130e30a539e6beb4356bb066f117 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandITCase.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandITCase.java @@ -50,7 +50,7 @@ public class CommandITCase { createCommand(); verify(commandRemoteService).createCommand(commandCaptor.capture(), anyLong()); - assertThat(commandCaptor.getValue().getBody()).containsEntry("assignedTo", UserTestFactory.ID.toString()); + assertThat(commandCaptor.getValue().getBody()).hasFieldOrPropertyWithValue("assignedTo", UserTestFactory.ID); } private void createCommand() throws Exception { diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandTestFactory.java index 58392090861ae5a3d8e27cf75c2d8122448628eb..bd5e2450735dcf4f6ca1750bccc1aef7b26339fb 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandTestFactory.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/command/CommandTestFactory.java @@ -48,13 +48,4 @@ public class CommandTestFactory { addQuote(command.getRedirectRequest().getPassword())); } - // TODO move to PostfachMessageTestFactory - public static String createPostfachMessageContent(CreateCommand command) { - return TestUtils.loadTextFile("jsonTemplates/command/createCommandWithPostfachMessage.json.tmpl", - command.getOrder().name(), - addQuote(command.getPostfachMessage().getReceiver()), - addQuote(command.getPostfachMessage().getSubject()), - addQuote(command.getPostfachMessage().getReply().toString())); - } - } \ No newline at end of file diff --git a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMessageTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMessageTestFactory.java index 3d0d20ebbfcbca4f93bc39c85194615a77c755d6..cf8f2b5fa943b91dfad06192d51575541de172e8 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMessageTestFactory.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMessageTestFactory.java @@ -5,8 +5,9 @@ import com.thedeanda.lorem.LoremIpsum; public class PostfachMessageTestFactory { public static final String RECEIVER = LoremIpsum.getInstance().getEmail(); - static final String SUBJECT = LoremIpsum.getInstance().getWords(20); - static final PostfachMessageReply REPLY = PostfachMessageReply.REPLY_POSSIBLE; + public static final String SUBJECT = LoremIpsum.getInstance().getWords(20); + public static final String MAIL_BODY = LoremIpsum.getInstance().getParagraphs(1, 1); + public static final PostfachMessageReply REPLY_OPTION = PostfachMessageReply.REPLY_POSSIBLE; public static PostfachMessage create() { return createBuilder().build(); @@ -14,8 +15,8 @@ public class PostfachMessageTestFactory { public static PostfachMessage.PostfachMessageBuilder createBuilder() { return PostfachMessage.builder() - .receiver(RECEIVER) .subject(SUBJECT) - .reply(REPLY); + .mailBody(MAIL_BODY) + .replyOption(REPLY_OPTION); } } \ No newline at end of file diff --git a/goofy-server/src/test/resources/jsonTemplates/command/createCommandWithPostfachMessage.json.tmpl b/goofy-server/src/test/resources/jsonTemplates/command/createCommandWithPostfachMessage.json.tmpl index 561dbc32793369ecfea7798621d459a0c4f204d0..28243e9131f0fd7ee180c0d3c638f5a01fcc1abe 100644 --- a/goofy-server/src/test/resources/jsonTemplates/command/createCommandWithPostfachMessage.json.tmpl +++ b/goofy-server/src/test/resources/jsonTemplates/command/createCommandWithPostfachMessage.json.tmpl @@ -1,8 +1,8 @@ { "order": "%s", - "postfachMessage": { - "receiver": %s, + "body": { + "replyOption": "%s", "subject": %s, - "reply": %s + "mailBody": "%s" } } \ No newline at end of file diff --git a/goofy-server/src/test/resources/jsonTemplates/command/createCommandWithRedirectRequest.json.tmpl b/goofy-server/src/test/resources/jsonTemplates/command/createCommandWithRedirectRequest.json.tmpl index 237c5b1dd762d047d72f10ee89156245bed63947..0e1be8961d1f1bdc4010e188d7e4ebce2331d637 100644 --- a/goofy-server/src/test/resources/jsonTemplates/command/createCommandWithRedirectRequest.json.tmpl +++ b/goofy-server/src/test/resources/jsonTemplates/command/createCommandWithRedirectRequest.json.tmpl @@ -3,5 +3,6 @@ "redirectRequest": { "email": %s, "password": %s - } + }, + "body": null } \ No newline at end of file diff --git a/goofy-server/src/test/resources/jsonTemplates/command/createVorgangCommand.json.tmpl b/goofy-server/src/test/resources/jsonTemplates/command/createVorgangCommand.json.tmpl index 64d27c8846dd5cd0654e7af502fded4231eb7b4e..deddf3fb6e23dd58606ad0c0bb0a7501449eb70b 100644 --- a/goofy-server/src/test/resources/jsonTemplates/command/createVorgangCommand.json.tmpl +++ b/goofy-server/src/test/resources/jsonTemplates/command/createVorgangCommand.json.tmpl @@ -1,3 +1,5 @@ { - "order": "%s" + "order": "%s", + "body": null + } \ No newline at end of file diff --git a/pom.xml b/pom.xml index ad7f6c74bee08223f53a97530738d7b18d0713ed..f5d34700c28648b2f44aa7bd95648024a23d37bb 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,8 @@ <grpc.spring-boot-starter.version>2.10.1.RELEASE</grpc.spring-boot-starter.version> <spring-admin.version>2.3.1</spring-admin.version> <mapstruct.version>1.4.1.Final</mapstruct.version> - <commons-io.version>2.8.0</commons-io.version> + <commons-io.version>2.11.0</commons-io.version> + <commons-beanutils.version>1.9.4</commons-beanutils.version> <keycloak-adapter.version>14.0.0</keycloak-adapter.version> <!-- <lombok.version>1.18.20</lombok.version> --> <lombok.version>edge-SNAPSHOT</lombok.version> @@ -79,6 +80,11 @@ <artifactId>commons-io</artifactId> <version>${commons-io.version}</version> </dependency> + <dependency> + <groupId>commons-beanutils</groupId> + <artifactId>commons-beanutils</artifactId> + <version>${commons-beanutils.version}</version> + </dependency> <!-- tools --> <dependency>