From b8e5c36782518cf819936c58ebdc400e47c1243f Mon Sep 17 00:00:00 2001
From: Greg DiCristofaro <gregd@basistech.com>
Date: Thu, 18 Feb 2021 12:31:03 -0500
Subject: [PATCH] fixing cr domain tests

---
 .../CorrelationAttributeNormalizerTest.java   | 153 +++++++++---------
 1 file changed, 75 insertions(+), 78 deletions(-)

diff --git a/Core/test/qa-functional/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeNormalizerTest.java b/Core/test/qa-functional/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeNormalizerTest.java
index e1ef943864..1aeafd1763 100644
--- a/Core/test/qa-functional/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeNormalizerTest.java
+++ b/Core/test/qa-functional/src/org/sleuthkit/autopsy/centralrepository/datamodel/CorrelationAttributeNormalizerTest.java
@@ -19,6 +19,8 @@
  */
 package org.sleuthkit.autopsy.centralrepository.datamodel;
 
+import java.util.Arrays;
+import java.util.List;
 import junit.framework.Test;
 import org.junit.Assert;
 import org.netbeans.junit.NbModuleSuite;
@@ -84,90 +86,85 @@ public void testValidateMd5() {
     private static final String WE_EXPECT_AN_EXCEPTION_HERE = "We expect an exception here.";
     private static final String THIS_SHOULD_HAVE_THROWN_AN_EXCEPTION = "This should have thrown an exception.";
 
-    public void testValidateDomain() {
-        final String goodDomainOne = "www.test.com";            //should pass
-        final String badDomainTwo = "http://www.test.com";      //should fail (includes protocol)
-        final String goodDomainThree = "test.com";              //should pass
-        final String badDomainFour = "http://1270.0.1";         //should fail
-        final String badDomainFive = "?>\\/)(*&.com";           //should fail
-        final String badDomainSix = null;                       //should fail
-        final String badDomainSeven = "";                       //should fail
-        final String badDomainEight = "HTTP://tests.com";       //should fail    
-        final String badDomainNine = "http://www.test.com/aPage?aQuestion=aParam&anotherQuestion=anotherParam";     //should fail
-        final String goodDomainTen = "WWW.TEST.COM";            //should pass but be lowered
-        final String goodDomainEleven = "TEST.COM";             //should pass but be lowered
+    /**
+     * Class for organizing records of successfully parsing and fail to parse
+     * domains.
+     */
+    private static class DomainData {
 
-        final int DOMAIN_TYPE_ID = CorrelationAttributeInstance.DOMAIN_TYPE_ID;
+        private final String originalString;
+        private final String resultDomain;
+        private final boolean shouldParse;
 
-        try {
-            assertTrue(THIS_DOMAIN_SHOULD_PASS, CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, goodDomainOne).equals(goodDomainOne));
-        } catch (CorrelationAttributeNormalizationException ex) {
-            Exceptions.printStackTrace(ex);
-            fail(ex.getMessage());
-        }
-        try {
-            CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, badDomainTwo);
-            fail(THIS_SHOULD_HAVE_THROWN_AN_EXCEPTION);
-        } catch (CorrelationAttributeNormalizationException ex) {
-            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);
-        }
-        try {
-            assertTrue(THIS_DOMAIN_SHOULD_PASS, CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, goodDomainThree).equals(goodDomainThree));
-        } catch (CorrelationAttributeNormalizationException ex) {
-            Exceptions.printStackTrace(ex);
-            fail(ex.getMessage());
-        }
-        try {
-            assertTrue(THIS_DOMAIN_SHOULD_PASS, CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, badDomainFour).equals(badDomainFour));
-            fail(THIS_SHOULD_HAVE_THROWN_AN_EXCEPTION);
-        } catch (CorrelationAttributeNormalizationException ex) {
-            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);
-        }
-        try {
-            CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, badDomainFive);
-            fail(THIS_SHOULD_HAVE_THROWN_AN_EXCEPTION);
-        } catch (CorrelationAttributeNormalizationException ex) {
-            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);
+        static DomainData fail(String originalString) {
+            return new DomainData(originalString, null, false);
         }
-        try {
-            CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, badDomainSix);
-            fail(THIS_SHOULD_HAVE_THROWN_AN_EXCEPTION);
-        } catch (CorrelationAttributeNormalizationException ex) {
-            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);
-        }
-        try {
-            CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, badDomainSeven);
-            fail(THIS_SHOULD_HAVE_THROWN_AN_EXCEPTION);
-        } catch (CorrelationAttributeNormalizationException ex) {
-            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);
+
+        static DomainData pass(String originalString, String resultDomain) {
+            return new DomainData(originalString, resultDomain, true);
         }
-        try {
-            CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, badDomainEight);
-            fail("This should have thrown an exception");
-        } catch (CorrelationAttributeNormalizationException ex) {
-            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);
+
+        private DomainData(String originalString, String resultDomain, boolean shouldParse) {
+            this.originalString = originalString;
+            this.resultDomain = resultDomain;
+            this.shouldParse = shouldParse;
         }
-        try {
-            CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, badDomainNine);
-            fail("This should have thrown an exception");
-        } catch (CorrelationAttributeNormalizationException ex) {
-            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);
+
+        String getOriginalString() {
+            return originalString;
         }
-        try {
-            assertTrue(THIS_DOMAIN_SHOULD_PASS, CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, goodDomainTen).equals(goodDomainTen.toLowerCase()));
-        } catch (CorrelationAttributeNormalizationException ex) {
-            Exceptions.printStackTrace(ex);
-            fail(ex.getMessage());
+
+        String getResultDomain() {
+            return resultDomain;
         }
-        try {
-            assertTrue(THIS_DOMAIN_SHOULD_PASS, CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, goodDomainEleven).equals(goodDomainEleven.toLowerCase()));
-        } catch (CorrelationAttributeNormalizationException ex) {
-            Exceptions.printStackTrace(ex);
-            fail(ex.getMessage());
+
+        boolean shouldParse() {
+            return shouldParse;
         }
     }
+
     private static final String THIS_DOMAIN_SHOULD_PASS = "This domain should pass.";
 
+    private static final List<DomainData> DOMAIN_DATA = Arrays.asList(
+            DomainData.pass("www.test.com", "test.com"),
+            DomainData.fail("http://www.test.com"),
+            DomainData.pass("test.com", "test.com"),
+            DomainData.fail("http://1270.0.1"),
+            DomainData.fail("?>\\/)(*&.com"),
+            DomainData.fail(null),
+            DomainData.fail(""),
+            DomainData.fail("HTTP://tests.com"),
+            DomainData.fail("http://www.test.com/aPage?aQuestion=aParam&anotherQuestion=anotherParam"),
+            DomainData.pass("WWW.TEST.COM", "test.com"),
+            DomainData.pass("TEST.COM", "test.com")
+    );
+
+    public void testValidateDomain() {
+        final int DOMAIN_TYPE_ID = CorrelationAttributeInstance.DOMAIN_TYPE_ID;
+        for (DomainData item : DOMAIN_DATA) {
+            if (item.shouldParse()) {
+                String input = item.getOriginalString();
+                String expected = item.getResultDomain();
+                try {
+                    String normalizedDomain = CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, input);
+                    assertTrue(String.format("Expected domain '%s' to be normalized, but was null.", item.getOriginalString()), normalizedDomain != null);
+                    assertTrue(String.format("Was unable to normalize domain '%s' to '%s' but received %s instead.", input, expected, normalizedDomain), normalizedDomain.equals(expected));
+                } catch (CorrelationAttributeNormalizationException ex) {
+                    Exceptions.printStackTrace(ex);
+                    fail(String.format("Unable to properly parse %s to %s.  Received: %s", input, expected, ex.getMessage()));
+                }
+
+            } else {
+                try {
+                    CorrelationAttributeNormalizer.normalize(DOMAIN_TYPE_ID, item.getOriginalString());
+                    fail(String.format("Original string: '%s' should have failed to parse.", item.getOriginalString()));
+                } catch (CorrelationAttributeNormalizationException ex) {
+                    assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);
+                }
+            }
+        }
+    }
+
     public void testValidateEmail() {
         final String goodEmailOne = "bsweeney@cipehrtechsolutions.com";     //should pass
         final String goodEmailTwo = "BSWEENEY@ciphertechsolutions.com";     //should pass and be lowered
@@ -232,7 +229,7 @@ public void testValidatePhone() {
         final String goodPnSeven = "+1(978) 474-0486";
         final String badPnEight = "asdfasdfasdf";
         final String badPnNine = "asdf19784740486adsf";
-                
+
         final int PHONE_TYPE_ID = CorrelationAttributeInstance.PHONE_TYPE_ID;
 
         try {
@@ -263,7 +260,7 @@ public void testValidatePhone() {
             CorrelationAttributeNormalizer.normalize(PHONE_TYPE_ID, badPnFive);
             //fail("This should have thrown an exception.");    //this will eventually pass when we do a better job at this
         } catch (CorrelationAttributeNormalizationException ex) {
-            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);    
+            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);
         }
         try {
             assertTrue(THIS_PHONE_NUMBER_SHOULD_PASS, CorrelationAttributeNormalizer.normalize(PHONE_TYPE_ID, goodPnSix).equals(goodPnThree));
@@ -281,13 +278,13 @@ public void testValidatePhone() {
             CorrelationAttributeNormalizer.normalize(PHONE_TYPE_ID, badPnEight);
             fail("This should have thrown an exception.");
         } catch (CorrelationAttributeNormalizationException ex) {
-            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);    
+            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);
         }
         try {
             CorrelationAttributeNormalizer.normalize(PHONE_TYPE_ID, badPnNine);
             fail("This should have thrown an exception.");
         } catch (CorrelationAttributeNormalizationException ex) {
-            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true); 
+            assertTrue(WE_EXPECT_AN_EXCEPTION_HERE, true);
         }
     }
     private static final String THIS_PHONE_NUMBER_SHOULD_PASS = "This phone number should pass.";
@@ -302,7 +299,7 @@ public void testValidateUsbId() {
         final String goodIdSix = "0202 AAFF";       //should pass
         final String goodIdSeven = "0202AAFF";      //should pass
         final String goodIdEight = "0202-AAFF";     //should pass*/
-                
+
         final int USBID_TYPE_ID = CorrelationAttributeInstance.USBID_TYPE_ID;
 
         try {
-- 
GitLab