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

OZG-4109 filter out postkorbId placeholder

parent d3bb6083
No related branches found
No related tags found
No related merge requests found
......@@ -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() {
......
......@@ -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