From 8ef9fff1c5d9d724c6ba469c2e31ef0e53520f5b Mon Sep 17 00:00:00 2001 From: uhensler <none@none> Date: Fri, 6 Oct 2017 16:24:53 +0200 Subject: [PATCH] OO-3065: Prevent auto-booking if no identifier value is delivered --- .../provider/auto/manager/InputValidator.java | 3 ++- .../provider/auto/manager/SemicolonSplitter.java | 3 ++- .../provider/auto/manager/SplitterFactory.java | 3 ++- .../provider/auto/manager/InputValidatorTest.java | 10 ++++++++++ .../provider/auto/manager/SemicolonSplitterTest.java | 6 ++++++ 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidator.java b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidator.java index 4e85e307fcd..d9a9891137c 100644 --- a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidator.java +++ b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidator.java @@ -19,6 +19,7 @@ */ package org.olat.resource.accesscontrol.provider.auto.manager; +import org.olat.core.util.StringHelper; import org.olat.resource.accesscontrol.provider.auto.AdvanceOrderInput; import org.springframework.stereotype.Component; @@ -40,7 +41,7 @@ class InputValidator { } else { isValid &= notNull(input.getIdentity()); isValid &= notNull(input.getMethodClass()); - isValid &= notNull(input.getRawValues()); + isValid &= StringHelper.containsNonWhitespace(input.getRawValues()); if (input.getKeys() == null) { isValid &= false; diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitter.java b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitter.java index 67e7e2f2405..7ac3a63c51f 100644 --- a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitter.java +++ b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitter.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import org.olat.core.util.StringHelper; import org.springframework.stereotype.Component; @@ -44,7 +45,7 @@ public class SemicolonSplitter implements IdentifierValueSplitter { @Override public Collection<String> split(String rawValue) { - if (rawValue == null) return new ArrayList<>(); + if (!StringHelper.containsNonWhitespace(rawValue)) return new ArrayList<>(); return Arrays.asList(rawValue.split(";")); } diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SplitterFactory.java b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SplitterFactory.java index 21127752c06..f0e7d41248d 100644 --- a/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SplitterFactory.java +++ b/src/main/java/org/olat/resource/accesscontrol/provider/auto/manager/SplitterFactory.java @@ -25,6 +25,7 @@ import java.util.Map; import javax.annotation.PostConstruct; +import org.olat.core.util.StringHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -51,7 +52,7 @@ public class SplitterFactory { public IdentifierValueSplitter getSplitter(String type) { IdentifierValueSplitter splitter = cache.get(type); - if (splitter == null) { + if (!StringHelper.containsNonWhitespace(type)) { splitter = cache.get(SemicolonSplitter.TYPE); } return splitter; diff --git a/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidatorTest.java b/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidatorTest.java index a828cbd122c..451217d2095 100644 --- a/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidatorTest.java +++ b/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/InputValidatorTest.java @@ -110,6 +110,16 @@ public class InputValidatorTest { assertThat(isValid).isFalse(); } + + @Test + public void shouldNotBeValidIfRawValuesIsEmptyString() { + when(inputMock.getRawValues()).thenReturn(""); + + boolean isValid = sut.isValid(inputMock); + + assertThat(isValid).isFalse(); + } + @Test public void shouldNotBeValidIfMethodDoesNotExist() { when(inputMock.getIdentity()).thenReturn(null); diff --git a/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitterTest.java b/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitterTest.java index 25e78ecd8c5..13a8d7388e9 100644 --- a/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitterTest.java +++ b/src/test/java/org/olat/resource/accesscontrol/provider/auto/manager/SemicolonSplitterTest.java @@ -67,6 +67,12 @@ public class SemicolonSplitterTest { public void shouldReturnEmptyCollectionIfNullInput() { Collection<String> values = sut.split(null); + assertThat(values).hasSize(0); + } + @Test + public void shouldReturnEmptyCollectionIfEmptyStringInput() { + Collection<String> values = sut.split(""); + assertThat(values).hasSize(0); } } -- GitLab