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