Skip to content

Commit 56ddee5

Browse files
author
Sumit Morchhale
committed
added code changes for engines command
1 parent 8d03bd4 commit 56ddee5

File tree

6 files changed

+200
-1
lines changed

6 files changed

+200
-1
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.checkmarx.ast.engines;
2+
3+
import com.checkmarx.ast.utils.JsonParser;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import com.fasterxml.jackson.databind.type.TypeFactory;
6+
7+
import java.util.List;
8+
9+
public class Api {
10+
String apiName;
11+
String description;
12+
String apiUrl;
13+
14+
public Api(
15+
@JsonProperty("api_name") String apiName,
16+
@JsonProperty("description") String description,
17+
@JsonProperty("api_url") String apiUrl
18+
){
19+
this.apiName=apiName;
20+
this.description=description;
21+
this.apiUrl=apiUrl;
22+
}
23+
24+
public static <T> T fromLine(String line) {
25+
return JsonParser.parse(line, TypeFactory.defaultInstance().constructType(Api.class));
26+
}
27+
28+
public static <T> List<T> listFromLine(String line) {
29+
return JsonParser.parse(line, TypeFactory.defaultInstance().constructCollectionType(List.class, Api.class));
30+
}
31+
32+
@Override
33+
public String toString() {
34+
return "Api{" +
35+
"apiName='" + apiName + '\'' +
36+
", description='" + description + '\'' +
37+
", apiUrl='" + apiUrl + '\'' +
38+
'}';
39+
}
40+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.checkmarx.ast.engines;
2+
3+
import com.checkmarx.ast.utils.JsonParser;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import com.fasterxml.jackson.databind.type.TypeFactory;
6+
7+
import java.util.Arrays;
8+
import java.util.List;
9+
10+
public class Engine {
11+
String engineName;
12+
String engineId;
13+
Api[] apis;
14+
15+
public Engine(
16+
@JsonProperty("engine_name") String engineName,
17+
@JsonProperty("engine_id") String engineId,
18+
@JsonProperty("apis") Api[] apis
19+
){
20+
this.engineId=engineId;
21+
this.engineName=engineName;
22+
this.apis=apis;
23+
}
24+
25+
public static <T> T fromLine(String line) {
26+
return JsonParser.parse(line, TypeFactory.defaultInstance().constructType(Engine.class));
27+
}
28+
29+
public static <T> List<T> listFromLine(String line) {
30+
return JsonParser.parse(line, TypeFactory.defaultInstance().constructCollectionType(List.class, Engine.class));
31+
}
32+
33+
@Override
34+
public String toString() {
35+
return "Engine{" +
36+
"engineName='" + engineName + '\'' +
37+
", engineId='" + engineId + '\'' +
38+
", apis=" + Arrays.toString(apis) +
39+
'}';
40+
}
41+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.checkmarx.ast.engines;
2+
3+
import com.checkmarx.ast.utils.JsonParser;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import com.fasterxml.jackson.databind.type.TypeFactory;
6+
import lombok.Getter;
7+
8+
import java.util.Arrays;
9+
import java.util.List;
10+
11+
@Getter
12+
public class Engines {
13+
Engine[] enginesList;
14+
public Engines(
15+
@JsonProperty("engines") Engine[] enginesList
16+
){
17+
this.enginesList =enginesList;
18+
}
19+
20+
public static <T> T fromLine(String line) {
21+
return JsonParser.parse(line, TypeFactory.defaultInstance().constructType(Engines.class));
22+
}
23+
24+
public static <T> List<T> listFromLine(String line) {
25+
return JsonParser.parse(line, TypeFactory.defaultInstance().constructCollectionType(List.class, Engines.class));
26+
}
27+
28+
@Override
29+
public String toString() {
30+
return "Engines{" +
31+
"enginesList=" + Arrays.toString(enginesList) +
32+
'}';
33+
}
34+
}

src/main/java/com/checkmarx/ast/wrapper/CxConstants.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,8 @@ public final class CxConstants {
7373
static final String SUB_CMD_LEARN_MORE = "learn-more";
7474
static final String SUB_CMD_TENANT = "tenant";
7575
static final String IDE_SCANS_KEY = "scan.config.plugins.ideScans";
76+
static final String CMD_ENGINES = "engines";
77+
static final String SUB_CMD_LIST_API = "list-api";
78+
static final String OUTPUT_FORMAT = "--output-format";
79+
static final String ENGINE_NAME_FILTER = "--engine-name";
7680
}

src/main/java/com/checkmarx/ast/wrapper/CxWrapper.java

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.checkmarx.ast.asca.ScanResult;
44
import com.checkmarx.ast.codebashing.CodeBashing;
5+
import com.checkmarx.ast.engines.Engines;
56
import com.checkmarx.ast.kicsRealtimeResults.KicsRealtimeResults;
67
import com.checkmarx.ast.learnMore.LearnMore;
78
import com.checkmarx.ast.predicate.CustomState;
@@ -512,6 +513,15 @@ private List<String> jsonArguments() {
512513
return arguments;
513514
}
514515

516+
private List<String> jsonArguments2() {
517+
List<String> arguments = new ArrayList<>();
518+
519+
arguments.add(CxConstants.OUTPUT_FORMAT);
520+
arguments.add(CxConstants.FORMAT_JSON);
521+
522+
return arguments;
523+
}
524+
515525
private List<String> filterArguments(String filter) {
516526
List<String> arguments = new ArrayList<>();
517527

@@ -522,4 +532,27 @@ private List<String> filterArguments(String filter) {
522532

523533
return arguments;
524534
}
525-
}
535+
536+
private List<String> engineFilterArguments(String filter) {
537+
List<String> arguments = new ArrayList<>();
538+
539+
if (StringUtils.isNotBlank(filter)) {
540+
arguments.add(CxConstants.ENGINE_NAME_FILTER);
541+
arguments.add(filter);
542+
}
543+
544+
return arguments;
545+
}
546+
547+
public Engines listApi(String filter) throws IOException, InterruptedException, CxException {
548+
this.logger.info("Fetching the api list using the filter: {}", filter);
549+
550+
List<String> arguments = new ArrayList<>();
551+
arguments.add(CxConstants.CMD_ENGINES);
552+
arguments.add(CxConstants.SUB_CMD_LIST_API);
553+
arguments.addAll(engineFilterArguments(filter));
554+
arguments.addAll(jsonArguments2());
555+
556+
return Execution.executeCommand(withConfigArguments(arguments), logger, Engines::fromLine);
557+
}
558+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.checkmarx.ast;
2+
3+
import com.checkmarx.ast.engines.Engines;
4+
import com.checkmarx.ast.wrapper.CxException;
5+
import lombok.NonNull;
6+
import lombok.SneakyThrows;
7+
import org.junit.jupiter.api.Assertions;
8+
import org.junit.jupiter.api.Test;
9+
import org.slf4j.Logger;
10+
import org.slf4j.LoggerFactory;
11+
12+
public class EngineTest extends BaseTest{
13+
14+
private static final Logger logger = LoggerFactory.getLogger(EngineTest.class);
15+
@Test
16+
void testApiList1() throws Exception {
17+
Engines enginesList = wrapper.listApi("");
18+
logger.info(enginesList.toString());
19+
Assertions.assertTrue(enginesList.getEnginesList().length>0);
20+
}
21+
22+
@Test
23+
void testApiList2() throws Exception {
24+
Engines enginesList = wrapper.listApi("SAST");
25+
logger.info(enginesList.toString());
26+
Assertions.assertTrue(enginesList.getEnginesList().length>0);
27+
}
28+
29+
@Test
30+
void testApiList3() throws Exception {
31+
Engines enginesList = wrapper.listApi("SCA");
32+
logger.info(enginesList.toString());
33+
Assertions.assertTrue(enginesList.getEnginesList().length>0);
34+
}
35+
@Test
36+
void testApiList4() throws Exception {
37+
Engines enginesList = wrapper.listApi("Iac");
38+
logger.info(enginesList.toString());
39+
Assertions.assertTrue(enginesList.getEnginesList().length>0);
40+
}
41+
@SneakyThrows
42+
@Test
43+
void testApiList5() throws Exception {
44+
Engines enginesList = wrapper.listApi("xyz");
45+
Assertions.assertEquals(null,enginesList);
46+
}
47+
}

0 commit comments

Comments
 (0)