11package com .jfrog .ide .common .configuration ;
22
3+ import com .jfrog .ide .common .nodes .FileIssueNode ;
34import com .jfrog .ide .common .nodes .FileTreeNode ;
5+ import com .jfrog .ide .common .nodes .subentities .Severity ;
6+ import com .jfrog .ide .common .nodes .subentities .SourceCodeScanType ;
47import com .jfrog .ide .common .parse .SarifParser ;
58import org .apache .commons .lang3 .SystemUtils ;
69import org .jfrog .build .api .util .NullLog ;
@@ -85,6 +88,8 @@ private void configJfrogCli(Boolean skipDownload) {
8588 fail (e .getMessage (), e );
8689 }
8790 testEnv .put ("JFROG_CLI_HOME_DIR" , tempDir .getAbsolutePath ());
91+ testEnv .put ("JFROG_CLI_LOG_LEVEL" , "DEBUG" );
92+ testEnv .put ("CI" , "true" );
8893 jfrogCliDriver = new JfrogCliDriver (testEnv , tempDir .getAbsolutePath () + File .separator , new NullLog ());
8994 }
9095
@@ -155,7 +160,6 @@ public void testAddCliServerConfig_withUsernameAndPassword() {
155160 CommandResults response = jfrogCliDriver .addCliServerConfig (XRAY_URL , ARTIFACTORY_URL , testServerId , USER_NAME , PASSWORD , null , tempDir , testEnv );
156161 JfrogCliServerConfig serverConfig = jfrogCliDriver .getServerConfig (tempDir , Collections .emptyList (), testEnv );
157162 assertTrue (response .isOk ());
158- assertTrue (response .getErr ().isBlank ());
159163 assertNotNull (serverConfig );
160164 assertEquals (serverConfig .getUsername (), USER_NAME );
161165 assertEquals (serverConfig .getPassword (), PASSWORD );
@@ -172,7 +176,6 @@ public void testAddCliServerConfig_withAccessToken() {
172176 CommandResults response = jfrogCliDriver .addCliServerConfig (XRAY_URL , ARTIFACTORY_URL , testServerId , null , null , ACCESS_TOKEN , tempDir , testEnv );
173177 JfrogCliServerConfig serverConfig = jfrogCliDriver .getServerConfig (tempDir , Collections .emptyList (), testEnv );
174178 assertTrue (response .isOk ());
175- assertTrue (response .getErr ().isBlank ());
176179 assertNotNull (serverConfig );
177180 assertEquals (serverConfig .getAccessToken (), ACCESS_TOKEN );
178181 assertEquals (serverConfig .getArtifactoryUrl (), ARTIFACTORY_URL );
@@ -200,14 +203,20 @@ public void testAddServerConfig_withBadCredentials() {
200203 public void testRunAudit_NpmProject () {
201204 String projectToCheck = "npm" ;
202205 try {
203- Path exampleProjectsFolder = Path .of ("src/test/resources/example-projects/npm " );
206+ Path exampleProjectsFolder = Path .of ("src/test/resources/example-projects" );
204207 CommandResults response = jfrogCliDriver .runCliAudit (exampleProjectsFolder .toFile (),
205208 singletonList (projectToCheck ), testServerId , null , testEnv );
206209 assertEquals (response .getExitValue (),0 );
207210 List <FileTreeNode > findings = parser .parse (response .getRes ());
208211 assertNotNull (findings );
209212 assertFalse (findings .isEmpty (), "Expected findings in SARIF output for npm project" );
210- // TODO: Add more checks on the findings
213+ // Verify the findings
214+ assertEquals (findings .size (), 1 , "Expected exactly one file with findings" );
215+ FileTreeNode node = findings .get (0 );
216+ assertEquals (node .getChildren ().size (), 1 , "Expected exactly one vulnerabilities" );
217+ FileIssueNode issue = (FileIssueNode ) node .getChildren ().get (0 );
218+ assertEquals (issue .getSeverity (), Severity .High , "Expected severity to be HIGH" );
219+ assertEquals (issue .getReporterType (), SourceCodeScanType .SCA , "Expected reporter type to be SCA" );
211220 } catch (Exception e ) {
212221 fail (e .getMessage (), e );
213222 }
@@ -221,10 +230,18 @@ public void testRunAudit_MultiMavenProject() {
221230 CommandResults response = jfrogCliDriver .runCliAudit (exampleProjectsFolder .toFile (),
222231 projectsToCheck , testServerId , null , testEnv );
223232 assertEquals (response .getExitValue (), 0 );
233+ System .out .println ("Audit debug logs: \n " + response .getErr ());
234+ System .out .println ("Audit response: \n " + response .getRes ());
224235 List <FileTreeNode > findings = parser .parse (response .getRes ());
225236 assertNotNull (findings );
226237 assertFalse (findings .isEmpty (), "Expected findings in SARIF output for multi-maven project" );
227- // TODO: Add more checks on the findings
238+ // Verifiy the findings
239+ assertEquals (findings .size (), 1 , "Expected exactly one file with findings" );
240+ FileTreeNode node = findings .get (0 );
241+ assertEquals (node .getChildren ().size (), 3 , "Expected exactly three vulnerabilities" );
242+ assertEquals (node .getSeverity (), Severity .High , "Expected severity to be HIGH" );
243+ FileIssueNode issue = (FileIssueNode ) node .getChildren ().get (0 );
244+ assertEquals (issue .getReporterType (), SourceCodeScanType .SCA , "Expected reporter type to be SCA" );
228245 } catch (Exception e ) {
229246 fail (e .getMessage (), e );
230247 }
@@ -234,6 +251,34 @@ private String createServerId() {
234251 return "ide-plugins-common-test-server-" + timeStampFormat .format (System .currentTimeMillis ());
235252 }
236253
254+ @ Test
255+ public void testRunAudit_WithExcludedPattern () {
256+ try {
257+ Path exampleProjectsFolder = Path .of ("src/test/resources/example-projects/maven-example" );
258+ AuditConfig config = new AuditConfig .Builder ()
259+ .serverId (testServerId )
260+ .excludedPattern (new ArrayList <>(List .of ("*multi3*" )))
261+ .serverId (testServerId )
262+ .extraArgs (null )
263+ .envVars (testEnv )
264+ .build ();
265+ CommandResults response = jfrogCliDriver .runCliAudit (exampleProjectsFolder .toFile (), config );
266+ assertEquals (response .getExitValue (), 0 );
267+ List <FileTreeNode > findings = parser .parse (response .getRes ());
268+ assertNotNull (findings );
269+ assertFalse (findings .isEmpty (), "Expected findings in SARIF output for multi-maven project" );
270+ // Verifiy the findings
271+ assertEquals (findings .size (), 1 , "Expected exactly one file with findings" );
272+ FileTreeNode node = findings .get (0 );
273+ assertEquals (node .getChildren ().size (), 3 , "Expected exactly three vulnerabilities" );
274+ assertEquals (node .getSeverity (), Severity .High , "Expected severity to be HIGH" );
275+ FileIssueNode issue = (FileIssueNode ) node .getChildren ().get (0 );
276+ assertEquals (issue .getReporterType (), SourceCodeScanType .SCA , "Expected reporter type to be SCA" );
277+ } catch (Exception e ) {
278+ fail (e .getMessage (), e );
279+ }
280+ }
281+
237282 @ AfterMethod
238283 public void cleanUp (Method method ) {
239284 try {
0 commit comments