Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions src/main/java/com/checkmarx/ast/engines/Api.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.checkmarx.ast.engines;

import com.checkmarx.ast.utils.JsonParser;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.type.TypeFactory;

import java.util.List;

public class Api {
String apiName;
String description;
String apiUrl;

public Api(
@JsonProperty("api_name") String apiName,
@JsonProperty("description") String description,
@JsonProperty("api_url") String apiUrl
){
this.apiName=apiName;
this.description=description;
this.apiUrl=apiUrl;
}

public static <T> T fromLine(String line) {
return JsonParser.parse(line, TypeFactory.defaultInstance().constructType(Api.class));
}

public static <T> List<T> listFromLine(String line) {
return JsonParser.parse(line, TypeFactory.defaultInstance().constructCollectionType(List.class, Api.class));
}

@Override
public String toString() {
return "Api{" +
"apiName='" + apiName + '\'' +
", description='" + description + '\'' +
", apiUrl='" + apiUrl + '\'' +
'}';
}
}
41 changes: 41 additions & 0 deletions src/main/java/com/checkmarx/ast/engines/Engine.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.checkmarx.ast.engines;

import com.checkmarx.ast.utils.JsonParser;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.type.TypeFactory;

import java.util.Arrays;
import java.util.List;

public class Engine {
String engineName;
String engineId;
Api[] apis;

public Engine(
@JsonProperty("engine_name") String engineName,
@JsonProperty("engine_id") String engineId,
@JsonProperty("apis") Api[] apis
){
this.engineId=engineId;
this.engineName=engineName;
this.apis=apis;
}

public static <T> T fromLine(String line) {
return JsonParser.parse(line, TypeFactory.defaultInstance().constructType(Engine.class));
}

public static <T> List<T> listFromLine(String line) {
return JsonParser.parse(line, TypeFactory.defaultInstance().constructCollectionType(List.class, Engine.class));
}

@Override
public String toString() {
return "Engine{" +
"engineName='" + engineName + '\'' +
", engineId='" + engineId + '\'' +
", apis=" + Arrays.toString(apis) +
'}';
}
}
34 changes: 34 additions & 0 deletions src/main/java/com/checkmarx/ast/engines/Engines.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.checkmarx.ast.engines;

import com.checkmarx.ast.utils.JsonParser;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.type.TypeFactory;
import lombok.Getter;

import java.util.Arrays;
import java.util.List;

@Getter
public class Engines {
Engine[] enginesList;
public Engines(
@JsonProperty("engines") Engine[] enginesList
){
this.enginesList =enginesList;
}

public static <T> T fromLine(String line) {
return JsonParser.parse(line, TypeFactory.defaultInstance().constructType(Engines.class));
}

public static <T> List<T> listFromLine(String line) {
return JsonParser.parse(line, TypeFactory.defaultInstance().constructCollectionType(List.class, Engines.class));
}

@Override
public String toString() {
return "Engines{" +
"enginesList=" + Arrays.toString(enginesList) +
'}';
}
}
4 changes: 4 additions & 0 deletions src/main/java/com/checkmarx/ast/wrapper/CxConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,8 @@ public final class CxConstants {
static final String SUB_CMD_LEARN_MORE = "learn-more";
static final String SUB_CMD_TENANT = "tenant";
static final String IDE_SCANS_KEY = "scan.config.plugins.ideScans";
static final String CMD_ENGINES = "engines";
static final String SUB_CMD_LIST_API = "list-api";
static final String OUTPUT_FORMAT = "--output-format";
static final String ENGINE_NAME_FILTER = "--engine-name";
}
35 changes: 34 additions & 1 deletion src/main/java/com/checkmarx/ast/wrapper/CxWrapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.checkmarx.ast.asca.ScanResult;
import com.checkmarx.ast.codebashing.CodeBashing;
import com.checkmarx.ast.engines.Engines;
import com.checkmarx.ast.kicsRealtimeResults.KicsRealtimeResults;
import com.checkmarx.ast.learnMore.LearnMore;
import com.checkmarx.ast.predicate.CustomState;
Expand Down Expand Up @@ -512,6 +513,15 @@ private List<String> jsonArguments() {
return arguments;
}

private List<String> jsonArguments2() {
List<String> arguments = new ArrayList<>();

arguments.add(CxConstants.OUTPUT_FORMAT);
arguments.add(CxConstants.FORMAT_JSON);

return arguments;
}

private List<String> filterArguments(String filter) {
List<String> arguments = new ArrayList<>();

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

return arguments;
}
}

private List<String> engineFilterArguments(String filter) {
List<String> arguments = new ArrayList<>();

if (StringUtils.isNotBlank(filter)) {
arguments.add(CxConstants.ENGINE_NAME_FILTER);
arguments.add(filter);
}

return arguments;
}

public Engines listApi(String filter) throws IOException, InterruptedException, CxException {
this.logger.info("Fetching the api list using the filter: {}", filter);

List<String> arguments = new ArrayList<>();
arguments.add(CxConstants.CMD_ENGINES);
arguments.add(CxConstants.SUB_CMD_LIST_API);
arguments.addAll(engineFilterArguments(filter));
arguments.addAll(jsonArguments2());

return Execution.executeCommand(withConfigArguments(arguments), logger, Engines::fromLine);
}
}
47 changes: 47 additions & 0 deletions src/test/java/com/checkmarx/ast/EngineTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.checkmarx.ast;

import com.checkmarx.ast.engines.Engines;
import com.checkmarx.ast.wrapper.CxException;
import lombok.NonNull;
import lombok.SneakyThrows;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class EngineTest extends BaseTest{

private static final Logger logger = LoggerFactory.getLogger(EngineTest.class);
@Test
void testApiList1() throws Exception {
Engines enginesList = wrapper.listApi("");
logger.info(enginesList.toString());
Assertions.assertTrue(enginesList.getEnginesList().length>0);
}

@Test
void testApiList2() throws Exception {
Engines enginesList = wrapper.listApi("SAST");
logger.info(enginesList.toString());
Assertions.assertTrue(enginesList.getEnginesList().length>0);
}

@Test
void testApiList3() throws Exception {
Engines enginesList = wrapper.listApi("SCA");
logger.info(enginesList.toString());
Assertions.assertTrue(enginesList.getEnginesList().length>0);
}
@Test
void testApiList4() throws Exception {
Engines enginesList = wrapper.listApi("Iac");
logger.info(enginesList.toString());
Assertions.assertTrue(enginesList.getEnginesList().length>0);
}
@SneakyThrows
@Test
void testApiList5() throws Exception {
Engines enginesList = wrapper.listApi("xyz");
Assertions.assertEquals(null,enginesList);
}
}
Loading