From 3c06ade221f3a6877442a5d0777f20c53100c33f Mon Sep 17 00:00:00 2001 From: Josh Date: Sun, 14 Jan 2024 13:30:15 -0600 Subject: [PATCH 1/2] appstore enhancements --- .classpath | 8 ++-- .project | 4 +- .settings/org.eclipse.wst.validation.prefs | 2 + pom.xml | 12 +++++ src/com/faction/elements/BaseExtension.java | 36 +++++++++++++++ src/com/faction/elements/utils/Log.java | 46 +++++++++++++++++++ src/com/faction/elements/utils/Logger.java | 45 ++++++------------ .../extender/ApplicationInventory.java | 4 +- .../faction/extender/AssessmentManager.java | 11 +++-- .../faction/extender/ExtensionMetaData.java | 10 ---- .../faction/extender/VerificationManager.java | 4 +- .../extender/VulnerabilityManager.java | 4 +- .../faction/unittests/ExtenderTestCase.java | 26 +++++++++++ 13 files changed, 158 insertions(+), 54 deletions(-) create mode 100644 .settings/org.eclipse.wst.validation.prefs create mode 100644 src/com/faction/elements/BaseExtension.java create mode 100644 src/com/faction/elements/utils/Log.java delete mode 100644 src/com/faction/extender/ExtensionMetaData.java create mode 100644 src/com/faction/unittests/ExtenderTestCase.java diff --git a/.classpath b/.classpath index 5519e78..238db49 100644 --- a/.classpath +++ b/.classpath @@ -1,15 +1,15 @@ - + + - - + + - diff --git a/.project b/.project index 737bd0e..a2b738e 100644 --- a/.project +++ b/.project @@ -16,12 +16,12 @@ - org.eclipse.m2e.core.maven2Builder + org.eclipse.wst.validation.validationbuilder - org.eclipse.wst.validation.validationbuilder + org.eclipse.m2e.core.maven2Builder diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/pom.xml b/pom.xml index 6276b83..afbd3c2 100644 --- a/pom.xml +++ b/pom.xml @@ -58,6 +58,18 @@ + + org.junit.jupiter + junit-jupiter-engine + 5.2.0 + test + + + org.junit.platform + junit-platform-runner + 1.2.0 + test + com.googlecode.json-simple json-simple diff --git a/src/com/faction/elements/BaseExtension.java b/src/com/faction/elements/BaseExtension.java new file mode 100644 index 0000000..ae135b1 --- /dev/null +++ b/src/com/faction/elements/BaseExtension.java @@ -0,0 +1,36 @@ +package com.faction.elements; + +import com.faction.elements.utils.Logger; +import com.faction.elements.utils.Log; + +import java.util.HashMap; +import java.util.List; + + +public class BaseExtension { + + private Logger logger; + private HashMap configs; + + public BaseExtension() { + logger = new Logger(); + } + + public Logger getLogger() { + return logger; + } + + public List getLogs(){ + return logger.getLogs(); + } + + public HashMap getConfigs(){ + return this.getConfigs(); + } + + public void setConfigs(HashMapconfigs) { + this.configs = configs; + } + + +} diff --git a/src/com/faction/elements/utils/Log.java b/src/com/faction/elements/utils/Log.java new file mode 100644 index 0000000..3fe111c --- /dev/null +++ b/src/com/faction/elements/utils/Log.java @@ -0,0 +1,46 @@ +package com.faction.elements.utils; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.Date; + +public class Log { + + public enum LEVEL { INFO, WARNING, ERROR, DEBUG }; + private LEVEL level; + private String message; + private String stackTrace; + private Date timestamp; + + public Log(LEVEL level, Exception exception) { + this.timestamp = new Date(); + this.level = level; + this.message = exception.getMessage(); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + exception.printStackTrace(pw); + this.stackTrace = sw.toString(); + + } + public Log(LEVEL level, String message) { + this.timestamp = new Date(); + this.level = level; + this.message = message; + this.stackTrace = ""; + + } + public LEVEL getLevel() { + return level; + } + public String getMessage() { + return message; + } + public String getStackTrace() { + return this.stackTrace; + } + + public Date getTimeStamp() { + return this.timestamp; + } + +} diff --git a/src/com/faction/elements/utils/Logger.java b/src/com/faction/elements/utils/Logger.java index 0c9e296..1ea665b 100644 --- a/src/com/faction/elements/utils/Logger.java +++ b/src/com/faction/elements/utils/Logger.java @@ -1,45 +1,26 @@ package com.faction.elements.utils; -import java.io.PrintWriter; -import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List; + +import com.faction.elements.utils.Log.LEVEL; public class Logger { - public enum LEVEL { INFO, WARNING, ERROR, DEBUG }; - private LEVEL level; - private String message; - private String stackTrace; + List logs = new ArrayList(); - public Logger(LEVEL level, Exception exception) { - this.level = level; - this.message = exception.getMessage(); - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - exception.printStackTrace(pw); - this.stackTrace = sw.toString(); - - } - public LEVEL getLevel() { - return level; + public void addLog(LEVEL level, Exception exception) { + logs.add(new Log(level, exception)); } - public void setLevel(LEVEL level) { - this.level = level; + public void addLog(LEVEL level, String message) { + logs.add(new Log(level, message)); } - public String getMessage() { - return message; - } - public void setMessage(String message) { - this.message = message; - } - public String getStackTrace() { - return this.stackTrace; + public List getLogs() { + logs.sort((l1,l2) -> l1.getTimeStamp().compareTo(l2.getTimeStamp())); + return logs; + } - - - - - } diff --git a/src/com/faction/extender/ApplicationInventory.java b/src/com/faction/extender/ApplicationInventory.java index b5885e1..d03dbef 100644 --- a/src/com/faction/extender/ApplicationInventory.java +++ b/src/com/faction/extender/ApplicationInventory.java @@ -1,5 +1,7 @@ package com.faction.extender; +import java.util.HashMap; + import com.faction.elements.results.InventoryResult; public interface ApplicationInventory { @@ -19,6 +21,6 @@ public interface ApplicationInventory { * @param Name is the name of the application * @return InvetoryResult[] is an array of Applications */ - public InventoryResult[] search(String id, String Name); + public InventoryResult[] search(String id, String Name, HashMap configs); } diff --git a/src/com/faction/extender/AssessmentManager.java b/src/com/faction/extender/AssessmentManager.java index 232a859..67274db 100644 --- a/src/com/faction/extender/AssessmentManager.java +++ b/src/com/faction/extender/AssessmentManager.java @@ -1,17 +1,21 @@ package com.faction.extender; +import java.util.HashMap; + import java.util.List; import com.faction.elements.Assessment; import com.faction.elements.Vulnerability; import com.faction.elements.results.AssessmentManagerResult; +import com.faction.elements.utils.Log; +import com.faction.elements.BaseExtension; -public interface AssessmentManager { +public interface AssessmentManager{ static public enum Operation { Create, Update, Delete, Finalize, PeerReviewCreated, PeerReviewCompleted, PeerReviewAccepted}; - + /** * This function allows you to update other interfaces when the command is run. This can also up @@ -22,7 +26,8 @@ static public enum Operation { Create, Update, Delete, * null if the Operation is Create. * @param Operation is Create Update or Delete as defined by the Operation Static variable */ - public AssessmentManagerResult assessmentChange(Assessment asmt, List vulns, Operation Operation); + public AssessmentManagerResult assessmentChange(Assessment asmt, List vulns, Operation Operation, HashMap configs); + diff --git a/src/com/faction/extender/ExtensionMetaData.java b/src/com/faction/extender/ExtensionMetaData.java deleted file mode 100644 index 25d4995..0000000 --- a/src/com/faction/extender/ExtensionMetaData.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.faction.extender; - -public interface ExtensionMetaData { - - public String getCreatedBy(); - public String getVersion(); - public String getDescription(); - - -} diff --git a/src/com/faction/extender/VerificationManager.java b/src/com/faction/extender/VerificationManager.java index 1bdaa60..9444077 100644 --- a/src/com/faction/extender/VerificationManager.java +++ b/src/com/faction/extender/VerificationManager.java @@ -1,5 +1,7 @@ package com.faction.extender; +import java.util.HashMap; + import com.faction.elements.User; import com.faction.elements.Verification; import com.faction.elements.Vulnerability; @@ -15,7 +17,7 @@ static public enum Operation { Cancel, PASS,FAIL,Assigned}; * @return All Operations return the updated vulnerability. If return value is null then * Faction will not update the internal database. */ - public Vulnerability verificationChange(User changer, Vulnerability vulnerability, Verification verification, Operation Operation); + public Vulnerability verificationChange(User changer, Vulnerability vulnerability, Verification verification, Operation Operation, HashMap configs); } diff --git a/src/com/faction/extender/VulnerabilityManager.java b/src/com/faction/extender/VulnerabilityManager.java index 3a2af39..cd6ba8c 100644 --- a/src/com/faction/extender/VulnerabilityManager.java +++ b/src/com/faction/extender/VulnerabilityManager.java @@ -1,5 +1,7 @@ package com.faction.extender; +import java.util.HashMap; + import com.faction.elements.Assessment; import com.faction.elements.Vulnerability; import com.faction.extender.AssessmentManager.Operation; @@ -14,7 +16,7 @@ static public enum Operation { Create, Update, Delete } * @return All Operations return the updated vulnerability. * */ - public Vulnerability vulnChange(Assessment asmt, Vulnerability vuln, Operation Operation); + public Vulnerability vulnChange(Assessment asmt, Vulnerability vuln, Operation Operation, HashMap configs); } diff --git a/src/com/faction/unittests/ExtenderTestCase.java b/src/com/faction/unittests/ExtenderTestCase.java new file mode 100644 index 0000000..61c3063 --- /dev/null +++ b/src/com/faction/unittests/ExtenderTestCase.java @@ -0,0 +1,26 @@ +package com.faction.unittests; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.ArrayList; +import java.util.List; +import java.util.ServiceLoader; +import org.junit.jupiter.api.Test; + +import com.faction.elements.Assessment; +import com.faction.elements.Vulnerability; +import com.faction.extender.AssessmentManager; +import com.faction.extender.AssessmentManager.Operation; + +public class ExtenderTestCase { + + @Test + void test() { + + assertTrue(true); + + } + +} From e4305c205ac0248520fc724e206c2f5b9a567ea9 Mon Sep 17 00:00:00 2001 From: Josh Date: Sun, 14 Jan 2024 15:25:05 -0600 Subject: [PATCH 2/2] adding tests and reorging file structure --- .classpath | 11 +-- .settings/org.eclipse.wst.common.component | 7 +- FactionExtender/src/META-INF/MANIFEST.MF | 3 - .../faction/unittests/ExtenderTestCase.java | 26 ------ .../com/faction/elements/Assessment.java | 0 .../com/faction/elements/BaseExtension.java | 4 +- .../java}/com/faction/elements/Campaign.java | 0 .../com/faction/elements/CustomField.java | 0 .../com/faction/elements/CustomType.java | 0 .../java}/com/faction/elements/User.java | 0 .../com/faction/elements/Verification.java | 0 .../com/faction/elements/Vulnerability.java | 0 .../results/AssessmentManagerResult.java | 0 .../elements/results/InventoryResult.java | 0 .../java}/com/faction/elements/utils/Log.java | 0 .../com/faction/elements/utils/Logger.java | 0 .../extender/ApplicationInventory.java | 4 +- .../faction/extender/AssessmentManager.java | 7 +- .../com/faction/extender/BaseInterface.java | 27 ++++++ .../faction/extender/VerificationManager.java | 4 +- .../extender/VulnerabilityManager.java | 4 +- .../com/faction/interfaces/_Assessment.java | 0 .../faction/interfaces/_AssessmentType.java | 0 .../com/faction/interfaces/_Campaign.java | 0 .../com/faction/interfaces/_Category.java | 0 .../com/faction/interfaces/_CustomField.java | 0 .../com/faction/interfaces/_CustomType.java | 0 .../com/faction/interfaces/_FinalReport.java | 0 .../java}/com/faction/interfaces/_Teams.java | 0 .../java}/com/faction/interfaces/_User.java | 0 .../com/faction/interfaces/_Verification.java | 0 .../faction/interfaces/_Vulnerability.java | 0 .../faction/unittests/ExtenderTestCase.java | 83 +++++++++++++++++++ 33 files changed, 128 insertions(+), 52 deletions(-) delete mode 100644 FactionExtender/src/META-INF/MANIFEST.MF delete mode 100644 src/com/faction/unittests/ExtenderTestCase.java rename src/{ => main/java}/com/faction/elements/Assessment.java (100%) rename src/{ => main/java}/com/faction/elements/BaseExtension.java (86%) rename src/{ => main/java}/com/faction/elements/Campaign.java (100%) rename src/{ => main/java}/com/faction/elements/CustomField.java (100%) rename src/{ => main/java}/com/faction/elements/CustomType.java (100%) rename src/{ => main/java}/com/faction/elements/User.java (100%) rename src/{ => main/java}/com/faction/elements/Verification.java (100%) rename src/{ => main/java}/com/faction/elements/Vulnerability.java (100%) rename src/{ => main/java}/com/faction/elements/results/AssessmentManagerResult.java (100%) rename src/{ => main/java}/com/faction/elements/results/InventoryResult.java (100%) rename src/{ => main/java}/com/faction/elements/utils/Log.java (100%) rename src/{ => main/java}/com/faction/elements/utils/Logger.java (100%) rename src/{ => main/java}/com/faction/extender/ApplicationInventory.java (81%) rename src/{ => main/java}/com/faction/extender/AssessmentManager.java (81%) create mode 100644 src/main/java/com/faction/extender/BaseInterface.java rename src/{ => main/java}/com/faction/extender/VerificationManager.java (89%) rename src/{ => main/java}/com/faction/extender/VulnerabilityManager.java (82%) rename src/{ => main/java}/com/faction/interfaces/_Assessment.java (100%) rename src/{ => main/java}/com/faction/interfaces/_AssessmentType.java (100%) rename src/{ => main/java}/com/faction/interfaces/_Campaign.java (100%) rename src/{ => main/java}/com/faction/interfaces/_Category.java (100%) rename src/{ => main/java}/com/faction/interfaces/_CustomField.java (100%) rename src/{ => main/java}/com/faction/interfaces/_CustomType.java (100%) rename src/{ => main/java}/com/faction/interfaces/_FinalReport.java (100%) rename src/{ => main/java}/com/faction/interfaces/_Teams.java (100%) rename src/{ => main/java}/com/faction/interfaces/_User.java (100%) rename src/{ => main/java}/com/faction/interfaces/_Verification.java (100%) rename src/{ => main/java}/com/faction/interfaces/_Vulnerability.java (100%) create mode 100644 src/test/java/com/faction/unittests/ExtenderTestCase.java diff --git a/.classpath b/.classpath index 238db49..1c0f9e7 100644 --- a/.classpath +++ b/.classpath @@ -1,13 +1,7 @@ - - - - - - - - + + @@ -19,5 +13,6 @@ + diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 0ebf5b4..b73fb2e 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,6 +1,9 @@ + - - + + + + diff --git a/FactionExtender/src/META-INF/MANIFEST.MF b/FactionExtender/src/META-INF/MANIFEST.MF deleted file mode 100644 index 5e94951..0000000 --- a/FactionExtender/src/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/src/com/faction/unittests/ExtenderTestCase.java b/src/com/faction/unittests/ExtenderTestCase.java deleted file mode 100644 index 61c3063..0000000 --- a/src/com/faction/unittests/ExtenderTestCase.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.faction.unittests; - -import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.ArrayList; -import java.util.List; -import java.util.ServiceLoader; -import org.junit.jupiter.api.Test; - -import com.faction.elements.Assessment; -import com.faction.elements.Vulnerability; -import com.faction.extender.AssessmentManager; -import com.faction.extender.AssessmentManager.Operation; - -public class ExtenderTestCase { - - @Test - void test() { - - assertTrue(true); - - } - -} diff --git a/src/com/faction/elements/Assessment.java b/src/main/java/com/faction/elements/Assessment.java similarity index 100% rename from src/com/faction/elements/Assessment.java rename to src/main/java/com/faction/elements/Assessment.java diff --git a/src/com/faction/elements/BaseExtension.java b/src/main/java/com/faction/elements/BaseExtension.java similarity index 86% rename from src/com/faction/elements/BaseExtension.java rename to src/main/java/com/faction/elements/BaseExtension.java index ae135b1..8cf1d97 100644 --- a/src/com/faction/elements/BaseExtension.java +++ b/src/main/java/com/faction/elements/BaseExtension.java @@ -10,7 +10,7 @@ public class BaseExtension { private Logger logger; - private HashMap configs; + private HashMap configs = new HashMap<>(); public BaseExtension() { logger = new Logger(); @@ -25,7 +25,7 @@ public List getLogs(){ } public HashMap getConfigs(){ - return this.getConfigs(); + return this.configs; } public void setConfigs(HashMapconfigs) { diff --git a/src/com/faction/elements/Campaign.java b/src/main/java/com/faction/elements/Campaign.java similarity index 100% rename from src/com/faction/elements/Campaign.java rename to src/main/java/com/faction/elements/Campaign.java diff --git a/src/com/faction/elements/CustomField.java b/src/main/java/com/faction/elements/CustomField.java similarity index 100% rename from src/com/faction/elements/CustomField.java rename to src/main/java/com/faction/elements/CustomField.java diff --git a/src/com/faction/elements/CustomType.java b/src/main/java/com/faction/elements/CustomType.java similarity index 100% rename from src/com/faction/elements/CustomType.java rename to src/main/java/com/faction/elements/CustomType.java diff --git a/src/com/faction/elements/User.java b/src/main/java/com/faction/elements/User.java similarity index 100% rename from src/com/faction/elements/User.java rename to src/main/java/com/faction/elements/User.java diff --git a/src/com/faction/elements/Verification.java b/src/main/java/com/faction/elements/Verification.java similarity index 100% rename from src/com/faction/elements/Verification.java rename to src/main/java/com/faction/elements/Verification.java diff --git a/src/com/faction/elements/Vulnerability.java b/src/main/java/com/faction/elements/Vulnerability.java similarity index 100% rename from src/com/faction/elements/Vulnerability.java rename to src/main/java/com/faction/elements/Vulnerability.java diff --git a/src/com/faction/elements/results/AssessmentManagerResult.java b/src/main/java/com/faction/elements/results/AssessmentManagerResult.java similarity index 100% rename from src/com/faction/elements/results/AssessmentManagerResult.java rename to src/main/java/com/faction/elements/results/AssessmentManagerResult.java diff --git a/src/com/faction/elements/results/InventoryResult.java b/src/main/java/com/faction/elements/results/InventoryResult.java similarity index 100% rename from src/com/faction/elements/results/InventoryResult.java rename to src/main/java/com/faction/elements/results/InventoryResult.java diff --git a/src/com/faction/elements/utils/Log.java b/src/main/java/com/faction/elements/utils/Log.java similarity index 100% rename from src/com/faction/elements/utils/Log.java rename to src/main/java/com/faction/elements/utils/Log.java diff --git a/src/com/faction/elements/utils/Logger.java b/src/main/java/com/faction/elements/utils/Logger.java similarity index 100% rename from src/com/faction/elements/utils/Logger.java rename to src/main/java/com/faction/elements/utils/Logger.java diff --git a/src/com/faction/extender/ApplicationInventory.java b/src/main/java/com/faction/extender/ApplicationInventory.java similarity index 81% rename from src/com/faction/extender/ApplicationInventory.java rename to src/main/java/com/faction/extender/ApplicationInventory.java index d03dbef..cbc06b6 100644 --- a/src/com/faction/extender/ApplicationInventory.java +++ b/src/main/java/com/faction/extender/ApplicationInventory.java @@ -4,7 +4,7 @@ import com.faction.elements.results.InventoryResult; -public interface ApplicationInventory { +public interface ApplicationInventory extends BaseInterface { /** * This is an interface for the Faction API that allows @@ -21,6 +21,6 @@ public interface ApplicationInventory { * @param Name is the name of the application * @return InvetoryResult[] is an array of Applications */ - public InventoryResult[] search(String id, String Name, HashMap configs); + public InventoryResult[] search(String id, String Name); } diff --git a/src/com/faction/extender/AssessmentManager.java b/src/main/java/com/faction/extender/AssessmentManager.java similarity index 81% rename from src/com/faction/extender/AssessmentManager.java rename to src/main/java/com/faction/extender/AssessmentManager.java index 67274db..27751fe 100644 --- a/src/com/faction/extender/AssessmentManager.java +++ b/src/main/java/com/faction/extender/AssessmentManager.java @@ -8,10 +8,9 @@ import com.faction.elements.Vulnerability; import com.faction.elements.results.AssessmentManagerResult; import com.faction.elements.utils.Log; -import com.faction.elements.BaseExtension; -public interface AssessmentManager{ +public interface AssessmentManager extends BaseInterface{ static public enum Operation { Create, Update, Delete, Finalize, PeerReviewCreated, PeerReviewCompleted, PeerReviewAccepted}; @@ -26,9 +25,7 @@ static public enum Operation { Create, Update, Delete, * null if the Operation is Create. * @param Operation is Create Update or Delete as defined by the Operation Static variable */ - public AssessmentManagerResult assessmentChange(Assessment asmt, List vulns, Operation Operation, HashMap configs); - - + public AssessmentManagerResult assessmentChange(Assessment asmt, List vulns, Operation Operation); diff --git a/src/main/java/com/faction/extender/BaseInterface.java b/src/main/java/com/faction/extender/BaseInterface.java new file mode 100644 index 0000000..32d456d --- /dev/null +++ b/src/main/java/com/faction/extender/BaseInterface.java @@ -0,0 +1,27 @@ +package com.faction.extender; + +import java.util.HashMap; +import java.util.List; + +import com.faction.elements.utils.Log; + +public interface BaseInterface { + /** + * This function is used by Faction to set the configurations for the extension. This should not be called + * locally in your classes + * + * @param configs + */ + public void setConfigs(HashMapconfigs); + + + /** + * This function is used by Faction to get all logs for the extension. This should not be called locally in + * your classes + * + * @return List logs : Returns a list of logs that can be displayed in the Faction UI + */ + public List getLogs(); + + +} diff --git a/src/com/faction/extender/VerificationManager.java b/src/main/java/com/faction/extender/VerificationManager.java similarity index 89% rename from src/com/faction/extender/VerificationManager.java rename to src/main/java/com/faction/extender/VerificationManager.java index 9444077..3336df3 100644 --- a/src/com/faction/extender/VerificationManager.java +++ b/src/main/java/com/faction/extender/VerificationManager.java @@ -6,7 +6,7 @@ import com.faction.elements.Verification; import com.faction.elements.Vulnerability; -public interface VerificationManager { +public interface VerificationManager extends BaseInterface { static public enum Operation { Cancel, PASS,FAIL,Assigned}; /** @@ -17,7 +17,7 @@ static public enum Operation { Cancel, PASS,FAIL,Assigned}; * @return All Operations return the updated vulnerability. If return value is null then * Faction will not update the internal database. */ - public Vulnerability verificationChange(User changer, Vulnerability vulnerability, Verification verification, Operation Operation, HashMap configs); + public Vulnerability verificationChange(User changer, Vulnerability vulnerability, Verification verification, Operation Operation); } diff --git a/src/com/faction/extender/VulnerabilityManager.java b/src/main/java/com/faction/extender/VulnerabilityManager.java similarity index 82% rename from src/com/faction/extender/VulnerabilityManager.java rename to src/main/java/com/faction/extender/VulnerabilityManager.java index cd6ba8c..fec1a5a 100644 --- a/src/com/faction/extender/VulnerabilityManager.java +++ b/src/main/java/com/faction/extender/VulnerabilityManager.java @@ -6,7 +6,7 @@ import com.faction.elements.Vulnerability; import com.faction.extender.AssessmentManager.Operation; -public interface VulnerabilityManager { +public interface VulnerabilityManager extends BaseInterface { static public enum Operation { Create, Update, Delete } /** @@ -16,7 +16,7 @@ static public enum Operation { Create, Update, Delete } * @return All Operations return the updated vulnerability. * */ - public Vulnerability vulnChange(Assessment asmt, Vulnerability vuln, Operation Operation, HashMap configs); + public Vulnerability vulnChange(Assessment asmt, Vulnerability vuln, Operation Operation); } diff --git a/src/com/faction/interfaces/_Assessment.java b/src/main/java/com/faction/interfaces/_Assessment.java similarity index 100% rename from src/com/faction/interfaces/_Assessment.java rename to src/main/java/com/faction/interfaces/_Assessment.java diff --git a/src/com/faction/interfaces/_AssessmentType.java b/src/main/java/com/faction/interfaces/_AssessmentType.java similarity index 100% rename from src/com/faction/interfaces/_AssessmentType.java rename to src/main/java/com/faction/interfaces/_AssessmentType.java diff --git a/src/com/faction/interfaces/_Campaign.java b/src/main/java/com/faction/interfaces/_Campaign.java similarity index 100% rename from src/com/faction/interfaces/_Campaign.java rename to src/main/java/com/faction/interfaces/_Campaign.java diff --git a/src/com/faction/interfaces/_Category.java b/src/main/java/com/faction/interfaces/_Category.java similarity index 100% rename from src/com/faction/interfaces/_Category.java rename to src/main/java/com/faction/interfaces/_Category.java diff --git a/src/com/faction/interfaces/_CustomField.java b/src/main/java/com/faction/interfaces/_CustomField.java similarity index 100% rename from src/com/faction/interfaces/_CustomField.java rename to src/main/java/com/faction/interfaces/_CustomField.java diff --git a/src/com/faction/interfaces/_CustomType.java b/src/main/java/com/faction/interfaces/_CustomType.java similarity index 100% rename from src/com/faction/interfaces/_CustomType.java rename to src/main/java/com/faction/interfaces/_CustomType.java diff --git a/src/com/faction/interfaces/_FinalReport.java b/src/main/java/com/faction/interfaces/_FinalReport.java similarity index 100% rename from src/com/faction/interfaces/_FinalReport.java rename to src/main/java/com/faction/interfaces/_FinalReport.java diff --git a/src/com/faction/interfaces/_Teams.java b/src/main/java/com/faction/interfaces/_Teams.java similarity index 100% rename from src/com/faction/interfaces/_Teams.java rename to src/main/java/com/faction/interfaces/_Teams.java diff --git a/src/com/faction/interfaces/_User.java b/src/main/java/com/faction/interfaces/_User.java similarity index 100% rename from src/com/faction/interfaces/_User.java rename to src/main/java/com/faction/interfaces/_User.java diff --git a/src/com/faction/interfaces/_Verification.java b/src/main/java/com/faction/interfaces/_Verification.java similarity index 100% rename from src/com/faction/interfaces/_Verification.java rename to src/main/java/com/faction/interfaces/_Verification.java diff --git a/src/com/faction/interfaces/_Vulnerability.java b/src/main/java/com/faction/interfaces/_Vulnerability.java similarity index 100% rename from src/com/faction/interfaces/_Vulnerability.java rename to src/main/java/com/faction/interfaces/_Vulnerability.java diff --git a/src/test/java/com/faction/unittests/ExtenderTestCase.java b/src/test/java/com/faction/unittests/ExtenderTestCase.java new file mode 100644 index 0000000..c905015 --- /dev/null +++ b/src/test/java/com/faction/unittests/ExtenderTestCase.java @@ -0,0 +1,83 @@ +package com.faction.unittests; + +import static org.junit.jupiter.api.Assertions.*; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.ServiceLoader; + +import org.junit.jupiter.api.Test; + +import com.faction.elements.Assessment; +import com.faction.elements.BaseExtension; +import com.faction.elements.Vulnerability; +import com.faction.elements.results.AssessmentManagerResult; +import com.faction.elements.utils.Log; +import com.faction.elements.utils.Log.LEVEL; +import com.faction.extender.AssessmentManager; +import com.faction.extender.AssessmentManager.Operation; + + + +public class ExtenderTestCase { + + @Test + void test() { + AssessmentManager asmtMgr = new MyAssmtMgr(); + HashMapconfigs = new HashMap<>(); + configs.put("Test1", "Test Config 1"); + configs.put("Test2", "Test Config 2"); + + asmtMgr.setConfigs(configs); + + Assessment asmt = new Assessment(); + asmt.setSummary("Default"); + + Vulnerability vuln = new Vulnerability(); + List vulns = new ArrayList<>(); + vulns.add(vuln); + + AssessmentManagerResult result = asmtMgr.assessmentChange(asmt, vulns, Operation.Create); + + assertTrue(result.getAssessment().getSummary().equals("This is a test")); + + assertTrue(asmtMgr.getLogs().size() == 2); + + List logs = asmtMgr.getLogs(); + assertTrue(logs.stream().anyMatch( log -> log.getMessage().equals("Got Config1: Test Config 1"))); + assertTrue(logs.stream().anyMatch( log -> log.getMessage().equals("Got Config2: Test Config 2"))); + + + + assertTrue(true); + + } + + public class MyAssmtMgr extends BaseExtension implements AssessmentManager{ + + @Override + public AssessmentManagerResult assessmentChange(Assessment asmt, List vulns, + Operation Operation) { + String config1 = this.getConfigs().get("Test1"); + String config2 = this.getConfigs().get("Test2"); + + asmt.setSummary("This is a test"); + + this.getLogger().addLog(LEVEL.INFO, "Got Config1: " + config1); + this.getLogger().addLog(LEVEL.INFO, "Got Config2: " + config2); + + AssessmentManagerResult result = new AssessmentManagerResult(); + result.setAssessment(asmt); + result.setVulnerabilities(vulns); + return result; + } + } + +} + +