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

Merge pull request 'OZG-4109: BayernID-Versand-schlaegt-fehl' (#13) from...

Merge pull request 'OZG-4109: BayernID-Versand-schlaegt-fehl' (#13) from OZG-4109-BayernID-Versand-schlaegt-fehl into master

Reviewed-on: https://git.ozg-sh.de/mgm/ozgcloud-formcycle-plugin/pulls/13
parents 06cfba22 326e99dd
No related branches found
No related tags found
No related merge requests found
......@@ -181,7 +181,7 @@
<goal>single</goal>
</goals>
<configuration>
<finalName>${project.artifactId}</finalName>
<finalName>${project.artifactId}-${project.version}</finalName>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
......
......@@ -47,12 +47,12 @@ public class OzgCloudFormDataMapper {
static final String SERVICEKONTO_VERSION = "1";
public FormCycleFormData map(FormData formData) {
return FormCycleFormData.newBuilder()
var formcycleFormDataBuilder = FormCycleFormData.newBuilder()
.setHeader(buildHeader(formData))
.setServiceKonto(buildServiceKonto(formData))
.setFormData(mapToGrpcFormData(formData))
.addAttachmentGroup(mapToAttachmentGroup(formData))
.build();
.addAttachmentGroup(mapToAttachmentGroup(formData));
formData.getPostkorbId().map(postkorbId -> buildServiceKonto(formData)).ifPresent(formcycleFormDataBuilder::setServiceKonto);
return formcycleFormDataBuilder.build();
}
FormCycleAttachmentGroup mapToAttachmentGroup(FormData formData) {
......
......@@ -23,6 +23,7 @@
package de.ozgcloud.formcycle.formdata;
import static java.util.Objects.*;
import static org.apache.commons.lang3.StringUtils.*;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -33,7 +34,9 @@ import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import de.xima.fc.interfaces.form.IFormDataAdapter;
import de.xima.fc.interfaces.workflow.execution.IWorkflowExecutionEnvironmentData;
......@@ -43,6 +46,8 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class PluginFormDataAdapter {
private static final Pattern FORMCYCLE_PLACEHOLDER = Pattern.compile("^\\[%\\s*\\$.+%]$");
private static final boolean AS_FIELD_NAME = false;
private static final String TEXT_KEY = "text";
static final String POSTKORB_FORM_KEY = "PostboxId";
......@@ -137,7 +142,15 @@ public class PluginFormDataAdapter {
Optional<String> getPostkorbId() {
return Optional.ofNullable(getFormDataAdapter().getFieldValues(POSTKORB_FORM_KEY))
.flatMap(list -> list.stream().flatMap(Arrays::stream).findFirst());
.flatMap(this::extractPostkorbId);
}
Optional<String> extractPostkorbId(List<String[]> values) {
return values.stream().flatMap(Stream::of).filter(this::isValidPostkorbId).findFirst();
}
boolean isValidPostkorbId(String postkorbId) {
return isNotBlank(postkorbId) && !FORMCYCLE_PLACEHOLDER.matcher(postkorbId).matches();
}
private String getFormName() {
......
......@@ -29,6 +29,7 @@ import static org.mockito.Mockito.*;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
......@@ -274,6 +275,16 @@ class OzgCloudFormDataMapperTest {
assertThat(ozgFormData.getServiceKonto()).isEqualTo(serviceKonto);
}
@Test
@DisplayName("should not set service konto if postkorbId not set")
void shouldNotSetServiceKonto() {
var formDate = FormDataTestFactory.createBuilder().postkorbId(Optional.empty()).build();
var ozgFormData = mapper.map(formDate);
assertThat(ozgFormData.getServiceKonto()).isEqualTo(FormCycleServiceKonto.getDefaultInstance());
}
@Test
void shouldSetAttachments() {
FormCycleAttachmentGroup attachmentGroup = mock(FormCycleAttachmentGroup.class);
......@@ -345,6 +356,7 @@ class OzgCloudFormDataMapperTest {
class TestServiceKonto {
private final FormData formData = FormDataTestFactory.create();
@Test
void shouldSetServiceKontoType() {
var serviceKonto = mapper.buildServiceKonto(formData);
......
......@@ -42,6 +42,9 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.NullSource;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
......@@ -440,6 +443,21 @@ class PluginFormDataAdapterTest {
assertThat(postkorbId).isEmpty();
}
}
@Nested
class TestPostkorbIdValidation {
@DisplayName("should return FALSE when")
@ParameterizedTest(name = "postkorbId is \"{0}\"")
@NullSource
@ValueSource(strings = {"", "[%$id%]", "[% $id%]", "[%$id %]", "[% $id %]"})
void shouldFilterOutEmptyValues(String postkorbId) {
var isValid = adapter.isValidPostkorbId(postkorbId);
assertThat(isValid).isFalse();
}
}
@Nested
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment