Skip to content

Commit c549f92

Browse files
authored
add project branches and branch to scan (#33)
1 parent a3d70d9 commit c549f92

File tree

6 files changed

+65
-20
lines changed

6 files changed

+65
-20
lines changed

src/main/java/com/checkmarx/ast/scan/Scan.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,20 @@ public class Scan extends CxBaseObject {
2626
String Status;
2727
String Initiator;
2828
String Origin;
29+
String Branch;
2930

3031
@JsonCreator
3132
public Scan(@JsonProperty("ID") String ID, @JsonProperty("ProjectID") String ProjectID,
3233
@JsonProperty("Status") String Status, @JsonProperty("CreatedAt") String CreatedAt,
3334
@JsonProperty("UpdatedAt") String UpdatedAt, @JsonProperty("Tags") Map<String, String> Tags,
34-
@JsonProperty("Initiator") String Initiator, @JsonProperty("Origin") String Origin) {
35+
@JsonProperty("Initiator") String Initiator, @JsonProperty("Origin") String Origin,
36+
@JsonProperty("Branch") String Branch) {
3537
super(ID, CreatedAt, UpdatedAt, Tags);
3638
this.ProjectID = ProjectID;
3739
this.Status = Status;
3840
this.Initiator = Initiator;
3941
this.Origin = Origin;
42+
this.Branch = Branch;
4043
}
4144

4245
public static <T> T fromLine(String line) {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public final class CxConstants {
2020
static final String CMD_AUTH = "auth";
2121
static final String SUB_CMD_VALIDATE = "validate";
2222
static final String CMD_PROJECT = "project";
23+
static final String SUB_CMD_BRANCHES = "branches";
2324
static final String CMD_SCAN = "scan";
2425
static final String SUB_CMD_SHOW = "show";
2526
static final String SUB_CMD_LIST = "list";

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

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import com.checkmarx.ast.results.Results;
66
import com.checkmarx.ast.scan.Scan;
77
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import com.fasterxml.jackson.databind.type.CollectionType;
9+
import com.fasterxml.jackson.databind.type.TypeFactory;
810
import lombok.NonNull;
911
import org.apache.commons.lang3.StringUtils;
1012
import org.slf4j.Logger;
@@ -22,6 +24,9 @@
2224

2325
public class CxWrapper {
2426

27+
private static final CollectionType BRANCHES_TYPE = TypeFactory.defaultInstance()
28+
.constructCollectionType(List.class, String.class);
29+
2530
@NonNull
2631
private final CxConfig cxConfig;
2732
@NonNull
@@ -79,10 +84,7 @@ public List<Scan> scanList(String filter) throws IOException, InterruptedExcepti
7984
arguments.add(CxConstants.CMD_SCAN);
8085
arguments.add(CxConstants.SUB_CMD_LIST);
8186
arguments.addAll(jsonArguments());
82-
if (StringUtils.isNotBlank(filter)) {
83-
arguments.add(CxConstants.FILTER);
84-
arguments.add(filter);
85-
}
87+
arguments.addAll(filterArguments(filter));
8688

8789
return Execution.executeCommand(withConfigArguments(arguments), logger, Scan::listFromLine);
8890
}
@@ -133,15 +135,28 @@ public List<Project> projectList(String filter) throws IOException, InterruptedE
133135
List<String> arguments = new ArrayList<>();
134136
arguments.add(CxConstants.CMD_PROJECT);
135137
arguments.add(CxConstants.SUB_CMD_LIST);
136-
if (StringUtils.isNotBlank(filter)) {
137-
arguments.add(CxConstants.FILTER);
138-
arguments.add(filter);
139-
}
138+
arguments.addAll(filterArguments(filter));
140139
arguments.addAll(jsonArguments());
141140

142141
return Execution.executeCommand(withConfigArguments(arguments), logger, Project::listFromLine);
143142
}
144143

144+
public List<String> projectBranches(@NonNull UUID projectId, String filter)
145+
throws CxException, IOException, InterruptedException {
146+
this.logger.info("initialized retrieval for project branches {}", filter);
147+
148+
List<String> arguments = new ArrayList<>();
149+
arguments.add(CxConstants.CMD_PROJECT);
150+
arguments.add(CxConstants.SUB_CMD_BRANCHES);
151+
arguments.add(CxConstants.PROJECT_ID);
152+
arguments.add(projectId.toString());
153+
arguments.addAll(filterArguments(filter));
154+
155+
return Execution.executeCommand(withConfigArguments(arguments),
156+
logger,
157+
(line) -> CxBaseObject.parse(line, BRANCHES_TYPE));
158+
}
159+
145160
public Results results(@NonNull UUID scanId) throws IOException, InterruptedException, CxException {
146161
return new ObjectMapper()
147162
.readerFor(Results.class)
@@ -189,4 +204,15 @@ private List<String> jsonArguments() {
189204

190205
return arguments;
191206
}
207+
208+
private List<String> filterArguments(String filter) {
209+
List<String> arguments = new ArrayList<>();
210+
211+
if (StringUtils.isNotBlank(filter)) {
212+
arguments.add(CxConstants.FILTER);
213+
arguments.add(filter);
214+
}
215+
216+
return arguments;
217+
}
192218
}

src/test/java/com/checkmarx/ast/BaseTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package com.checkmarx.ast;
22

33
import com.checkmarx.ast.wrapper.CxConfig;
4+
import com.checkmarx.ast.wrapper.CxConstants;
45
import com.checkmarx.ast.wrapper.CxWrapper;
56
import org.junit.Before;
67
import org.slf4j.Logger;
78
import org.slf4j.LoggerFactory;
89

10+
import java.util.HashMap;
11+
import java.util.Map;
12+
913
public abstract class BaseTest {
1014

1115
protected CxWrapper wrapper;
@@ -45,4 +49,13 @@ protected static CxConfig getConfig() {
4549
private static String getEnvOrNull(String key) {
4650
return System.getenv().getOrDefault(key, null);
4751
}
52+
53+
protected Map<String, String> commonParams() {
54+
Map<String, String> params = new HashMap<>();
55+
params.put(CxConstants.PROJECT_NAME, "JavaWrapperTestCases");
56+
params.put(CxConstants.SOURCE, ".");
57+
params.put(CxConstants.FILE_FILTER, "*.java");
58+
params.put(CxConstants.SAST_PRESET_NAME, "Checkmarx Default");
59+
return params;
60+
}
4861
}

src/test/java/com/checkmarx/ast/ProjectTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package com.checkmarx.ast;
22

33
import com.checkmarx.ast.project.Project;
4+
import com.checkmarx.ast.scan.Scan;
5+
import com.checkmarx.ast.wrapper.CxConstants;
46
import org.junit.Assert;
57
import org.junit.Test;
68

79
import java.util.List;
10+
import java.util.Map;
811
import java.util.UUID;
912

1013
public class ProjectTest extends BaseTest {
@@ -22,4 +25,14 @@ public void testProjectList() throws Exception {
2225
List<Project> projectList = wrapper.projectList("limit=10");
2326
Assert.assertTrue(projectList.size() <= 10);
2427
}
28+
29+
@Test
30+
public void testProjectBranches() throws Exception {
31+
Map<String, String> params = commonParams();
32+
params.put(CxConstants.BRANCH, "test");
33+
Scan scan = wrapper.scanCreate(params);
34+
List<String> branches = wrapper.projectBranches(UUID.fromString(scan.getProjectID()), "");
35+
Assert.assertTrue(branches.size() >= 1);
36+
Assert.assertTrue(branches.contains("test"));
37+
}
2538
}

src/test/java/com/checkmarx/ast/ScanTest.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,12 @@
66
import org.junit.Assert;
77
import org.junit.Test;
88

9-
import java.util.HashMap;
109
import java.util.List;
1110
import java.util.Map;
1211
import java.util.UUID;
1312

1413
public class ScanTest extends BaseTest {
1514

16-
17-
private Map<String, String> commonParams() {
18-
Map<String, String> params = new HashMap<>();
19-
params.put(CxConstants.PROJECT_NAME, "JavaWrapperTestCases");
20-
params.put(CxConstants.SOURCE, ".");
21-
params.put(CxConstants.FILE_FILTER, "*.java");
22-
params.put(CxConstants.SAST_PRESET_NAME, "Checkmarx Default");
23-
return params;
24-
}
25-
2615
@Test
2716
public void testScanShow() throws Exception {
2817
List<Scan> scanList = wrapper.scanList();

0 commit comments

Comments
 (0)