METRON-2202 Add parameter validation for the stellar field validation functions (MohanDV via mmiklavc) closes apache/metron#1476
diff --git a/metron-platform/metron-common/src/main/java/org/apache/metron/common/field/validation/SimpleValidation.java b/metron-platform/metron-common/src/main/java/org/apache/metron/common/field/validation/SimpleValidation.java
index 3a0b4f8..2909df3 100644
--- a/metron-platform/metron-common/src/main/java/org/apache/metron/common/field/validation/SimpleValidation.java
+++ b/metron-platform/metron-common/src/main/java/org/apache/metron/common/field/validation/SimpleValidation.java
@@ -52,6 +52,9 @@
@Override
public boolean test(List<Object> input) {
+ if(input.isEmpty()) {
+ return false;
+ }
Predicate<Object> predicate = getPredicate();
for(Object o : input) {
if(o == null || !predicate.test(o)){
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/DomainValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/DomainValidationTest.java
index ee57efa..5277c3f 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/DomainValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/DomainValidationTest.java
@@ -25,6 +25,7 @@
import org.junit.Test;
import java.io.IOException;
+import java.util.Collections;
import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
@@ -64,6 +65,13 @@
Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "www.hotmail.co.uk")));
Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "www.hotmail.co.uk")));
}
+
+ @Test
+ public void negativeTest_empty() throws IOException {
+ Assert.assertFalse(runPredicate("IS_DOMAIN()", Collections.emptyMap()));
+ Assert.assertFalse(runPredicate("IS_DOMAIN('')", Collections.emptyMap()));
+ }
+
@Test
public void negativeTest_single() throws IOException {
Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/EmailValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/EmailValidationTest.java
index e45c467..6360ac1 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/EmailValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/EmailValidationTest.java
@@ -25,6 +25,7 @@
import org.junit.Test;
import java.io.IOException;
+import java.util.Collections;
import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
@@ -76,6 +77,11 @@
Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.7f)));
}
@Test
+ public void negativeTest_empty() throws IOException {
+ Assert.assertFalse(runPredicate("IS_EMAIL()", Collections.emptyMap()));
+ Assert.assertFalse(runPredicate("IS_EMAIL('')", Collections.emptyMap()));
+ }
+ @Test
public void positiveTest_multiple() throws IOException {
Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "me@www.gmail.com", "field2", "me@www.hotmail.com")));
Assert.assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "me@www.gmail.com", "field2", "me@www.hotmail.com")));
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/URLValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/URLValidationTest.java
index 1099df7..6a4ec38 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/URLValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/URLValidationTest.java
@@ -25,6 +25,7 @@
import org.junit.Test;
import java.io.IOException;
+import java.util.Collections;
import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
@@ -64,8 +65,11 @@
Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "https://www.hotmail.co.uk")));
Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "https://www.hotmail.co.uk")));
}
-
-
+ @Test
+ public void negativeTest_empty() throws IOException {
+ Assert.assertFalse(runPredicate("IS_URL()", Collections.emptyMap()));
+ Assert.assertFalse(runPredicate("IS_URL('')", Collections.emptyMap()));
+ }
@Test
public void negativeTest_single() throws IOException {
Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/IntegerValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/IntegerValidationTest.java
index bfd309d..a6e717d 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/IntegerValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/IntegerValidationTest.java
@@ -25,6 +25,7 @@
import org.junit.Test;
import java.io.IOException;
+import java.util.Collections;
import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
@@ -65,6 +66,11 @@
Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "1")));
}
@Test
+ public void negativeTest_empty() throws IOException {
+ Assert.assertFalse(runPredicate("IS_INTEGER()", Collections.emptyMap()));
+ Assert.assertFalse(runPredicate("IS_INTEGER('')", Collections.emptyMap()));
+ }
+ @Test
public void negativeTest_single() throws IOException {
Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "foo")));