Skip to content

Commit d91cf05

Browse files
cx-atish-jadhavcx-anurag-dalke
authored andcommitted
increasing testcoverage
1 parent a7ad7d5 commit d91cf05

39 files changed

Lines changed: 8483 additions & 0 deletions
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.checkmarx.ast.auth;
2+
3+
import com.checkmarx.ast.BaseTest;
4+
import com.checkmarx.ast.wrapper.CxConfig;
5+
import com.checkmarx.ast.wrapper.CxConstants;
6+
import com.checkmarx.ast.wrapper.CxException;
7+
import com.checkmarx.ast.wrapper.CxWrapper;
8+
import org.junit.jupiter.api.Assertions;
9+
import org.junit.jupiter.api.Test;
10+
11+
import java.io.IOException;
12+
import java.lang.reflect.Field;
13+
import java.util.Map;
14+
15+
class AuthTest extends BaseTest {
16+
@Test
17+
void testAuthValidate() throws CxException, IOException, InterruptedException {
18+
Assertions.assertNotNull(wrapper.authValidate());
19+
}
20+
//
21+
@Test
22+
void testAuthFailure() {
23+
CxConfig cxConfig = getConfig();
24+
cxConfig.setBaseAuthUri("wrongAuth");
25+
cxConfig.setApiKey("InvalidApiKey");
26+
Assertions.assertThrows(CxException.class, () -> new CxWrapper(cxConfig, getLogger()).authValidate());
27+
}
28+
}
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
package com.checkmarx.ast.containersrealtime;
2+
3+
import com.checkmarx.ast.realtime.RealtimeLocation;
4+
import org.junit.jupiter.api.DisplayName;
5+
import org.junit.jupiter.api.Test;
6+
7+
import java.util.ArrayList;
8+
import java.util.Arrays;
9+
import java.util.Collections;
10+
import java.util.List;
11+
12+
import static org.junit.jupiter.api.Assertions.*;
13+
14+
@DisplayName("ContainersRealtimeImage")
15+
class ContainersRealtimeImageTest {
16+
17+
@Test
18+
@DisplayName("ContainersRealtimeImage is a POJO with Lombok @Value")
19+
void testContainersRealtimeImageExists() {
20+
// ContainersRealtimeImage uses @Value with complex constructor
21+
// Test class existence and basic contract
22+
assertNotNull(ContainersRealtimeImage.class);
23+
assertTrue(ContainersRealtimeImage.class.getSimpleName().contains("ContainersRealtimeImage"));
24+
}
25+
26+
@Test
27+
@DisplayName("Constructor with all parameters creates valid instance")
28+
void testConstructor_WithAllParameters() {
29+
List<RealtimeLocation> locations = Arrays.asList(new RealtimeLocation(1, 0, 10));
30+
List<ContainersRealtimeVulnerability> vulns = Arrays.asList(
31+
new ContainersRealtimeVulnerability("CVE-2021-1", "high")
32+
);
33+
34+
ContainersRealtimeImage img = new ContainersRealtimeImage(
35+
"nginx:latest", "1.0", "/app/Dockerfile", locations, "VULNERABLE", vulns
36+
);
37+
38+
assertNotNull(img);
39+
assertEquals("nginx:latest", img.getImageName());
40+
assertEquals("1.0", img.getImageTag());
41+
assertEquals("/app/Dockerfile", img.getFilePath());
42+
assertEquals("VULNERABLE", img.getStatus());
43+
assertEquals(1, img.getLocations().size());
44+
assertEquals(1, img.getVulnerabilities().size());
45+
}
46+
47+
@Test
48+
@DisplayName("Constructor with null locations converts to empty list")
49+
void testConstructor_NullLocations_CreatesEmptyList() {
50+
ContainersRealtimeImage img = new ContainersRealtimeImage(
51+
"ubuntu:20.04", "2.0", "Dockerfile", null, "SAFE", new ArrayList<>()
52+
);
53+
54+
assertNotNull(img.getLocations());
55+
assertEquals(0, img.getLocations().size());
56+
}
57+
58+
@Test
59+
@DisplayName("Constructor with null vulnerabilities converts to empty list")
60+
void testConstructor_NullVulnerabilities_CreatesEmptyList() {
61+
ContainersRealtimeImage img = new ContainersRealtimeImage(
62+
"alpine:3.12", "3.0", "Dockerfile", new ArrayList<>(), "SAFE", null
63+
);
64+
65+
assertNotNull(img.getVulnerabilities());
66+
assertEquals(0, img.getVulnerabilities().size());
67+
}
68+
69+
@Test
70+
@DisplayName("Constructor with both null collections")
71+
void testConstructor_BothNull_CreatesEmptyCollections() {
72+
ContainersRealtimeImage img = new ContainersRealtimeImage(
73+
"centos:8", "4.0", "Dockerfile", null, "SAFE", null
74+
);
75+
76+
assertEquals(0, img.getLocations().size());
77+
assertEquals(0, img.getVulnerabilities().size());
78+
}
79+
80+
@Test
81+
@DisplayName("equals returns true for identical images")
82+
void testEquals_IdenticalImages_ReturnsTrue() {
83+
ContainersRealtimeImage img1 = new ContainersRealtimeImage(
84+
"nginx:latest", "1.0", "/app/Dockerfile", new ArrayList<>(), "VULNERABLE", new ArrayList<>()
85+
);
86+
ContainersRealtimeImage img2 = new ContainersRealtimeImage(
87+
"nginx:latest", "1.0", "/app/Dockerfile", new ArrayList<>(), "VULNERABLE", new ArrayList<>()
88+
);
89+
90+
assertEquals(img1, img2);
91+
}
92+
93+
@Test
94+
@DisplayName("equals returns false when imageName differs")
95+
void testEquals_DifferentImageName_ReturnsFalse() {
96+
ContainersRealtimeImage img1 = new ContainersRealtimeImage(
97+
"nginx:latest", "1.0", "/app/Dockerfile", null, "VULNERABLE", null
98+
);
99+
ContainersRealtimeImage img2 = new ContainersRealtimeImage(
100+
"apache:latest", "1.0", "/app/Dockerfile", null, "VULNERABLE", null
101+
);
102+
103+
assertNotEquals(img1, img2);
104+
}
105+
106+
@Test
107+
@DisplayName("equals returns false when imageTag differs")
108+
void testEquals_DifferentImageTag_ReturnsFalse() {
109+
ContainersRealtimeImage img1 = new ContainersRealtimeImage(
110+
"nginx:latest", "1.0", "/app/Dockerfile", null, "VULNERABLE", null
111+
);
112+
ContainersRealtimeImage img2 = new ContainersRealtimeImage(
113+
"nginx:latest", "2.0", "/app/Dockerfile", null, "VULNERABLE", null
114+
);
115+
116+
assertNotEquals(img1, img2);
117+
}
118+
119+
@Test
120+
@DisplayName("equals returns false when filePath differs")
121+
void testEquals_DifferentFilePath_ReturnsFalse() {
122+
ContainersRealtimeImage img1 = new ContainersRealtimeImage(
123+
"nginx:latest", "1.0", "/app/Dockerfile", null, "VULNERABLE", null
124+
);
125+
ContainersRealtimeImage img2 = new ContainersRealtimeImage(
126+
"nginx:latest", "1.0", "/docker/Dockerfile", null, "VULNERABLE", null
127+
);
128+
129+
assertNotEquals(img1, img2);
130+
}
131+
132+
@Test
133+
@DisplayName("equals returns false when status differs")
134+
void testEquals_DifferentStatus_ReturnsFalse() {
135+
ContainersRealtimeImage img1 = new ContainersRealtimeImage(
136+
"nginx:latest", "1.0", "/app/Dockerfile", null, "VULNERABLE", null
137+
);
138+
ContainersRealtimeImage img2 = new ContainersRealtimeImage(
139+
"nginx:latest", "1.0", "/app/Dockerfile", null, "SAFE", null
140+
);
141+
142+
assertNotEquals(img1, img2);
143+
}
144+
145+
@Test
146+
@DisplayName("hashCode is consistent for equal images")
147+
void testHashCode_EqualImages_SameHash() {
148+
ContainersRealtimeImage img1 = new ContainersRealtimeImage(
149+
"nginx:latest", "1.0", "/app/Dockerfile", new ArrayList<>(), "VULNERABLE", new ArrayList<>()
150+
);
151+
ContainersRealtimeImage img2 = new ContainersRealtimeImage(
152+
"nginx:latest", "1.0", "/app/Dockerfile", new ArrayList<>(), "VULNERABLE", new ArrayList<>()
153+
);
154+
155+
assertEquals(img1.hashCode(), img2.hashCode());
156+
}
157+
158+
@Test
159+
@DisplayName("toString produces non-null string")
160+
void testToString_ProducesNonNull() {
161+
ContainersRealtimeImage img = new ContainersRealtimeImage(
162+
"nginx:latest", "1.0", "/app/Dockerfile", null, "VULNERABLE", null
163+
);
164+
165+
assertNotNull(img.toString());
166+
assertFalse(img.toString().isEmpty());
167+
}
168+
169+
@Test
170+
@DisplayName("equals with null returns false")
171+
void testEquals_WithNull_ReturnsFalse() {
172+
ContainersRealtimeImage img = new ContainersRealtimeImage(
173+
"nginx:latest", "1.0", "/app/Dockerfile", null, "VULNERABLE", null
174+
);
175+
176+
assertFalse(img.equals(null));
177+
}
178+
179+
@Test
180+
@DisplayName("equals with different type returns false")
181+
void testEquals_DifferentType_ReturnsFalse() {
182+
ContainersRealtimeImage img = new ContainersRealtimeImage(
183+
"nginx:latest", "1.0", "/app/Dockerfile", null, "VULNERABLE", null
184+
);
185+
186+
assertFalse(img.equals("not an image"));
187+
}
188+
189+
}
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
package com.checkmarx.ast.containersrealtime;
2+
3+
import com.checkmarx.ast.realtime.RealtimeLocation;
4+
import org.junit.jupiter.api.Test;
5+
6+
import java.util.Collections;
7+
8+
import static org.junit.jupiter.api.Assertions.*;
9+
10+
class ContainersRealtimeParsingUnitTest {
11+
12+
// --- ContainersRealtimeResults.fromLine ---
13+
14+
@Test
15+
void testFromLineWithValidImagesJson() {
16+
String json = "{\"Images\": [{" +
17+
" \"ImageName\": \"nginx\"," +
18+
" \"ImageTag\": \"1.21\"," +
19+
" \"FilePath\": \"/Dockerfile\"," +
20+
" \"Status\": \"vulnerable\"" +
21+
"}]}";
22+
ContainersRealtimeResults results = ContainersRealtimeResults.fromLine(json);
23+
assertNotNull(results);
24+
assertNotNull(results.getImages());
25+
assertEquals(1, results.getImages().size());
26+
ContainersRealtimeImage img = results.getImages().get(0);
27+
assertEquals("nginx", img.getImageName());
28+
assertEquals("1.21", img.getImageTag());
29+
assertEquals("/Dockerfile", img.getFilePath());
30+
assertEquals("vulnerable", img.getStatus());
31+
}
32+
33+
@Test
34+
void testFromLineWithJsonWithoutImagesKey() {
35+
// Valid JSON but no "Images" key — contains check fails → null
36+
assertNull(ContainersRealtimeResults.fromLine("{\"Other\": []}"));
37+
assertNull(ContainersRealtimeResults.fromLine("[{\"ImageName\": \"x\"}]"));
38+
}
39+
40+
@Test
41+
void testFromLineWithBlankAndNull() {
42+
assertNull(ContainersRealtimeResults.fromLine(""));
43+
assertNull(ContainersRealtimeResults.fromLine(" "));
44+
assertNull(ContainersRealtimeResults.fromLine(null));
45+
}
46+
47+
@Test
48+
void testFromLineWithInvalidJson() {
49+
assertNull(ContainersRealtimeResults.fromLine("{bad"));
50+
assertNull(ContainersRealtimeResults.fromLine("[{]"));
51+
}
52+
53+
@Test
54+
void testFromLineWithImagesKeyButMalformedJson() {
55+
// Contains "Images" (with quotes) so isValidJSON is called, but JSON is malformed →
56+
// isValidJSON catches IOException and returns false → fromLine returns null.
57+
// This covers the isValidJSON catch block (+3 instructions).
58+
assertNull(ContainersRealtimeResults.fromLine("{\"Images\": not valid json}"));
59+
}
60+
61+
@Test
62+
void testFromLineWithEmptyImagesArray() {
63+
ContainersRealtimeResults results = ContainersRealtimeResults.fromLine("{\"Images\": []}");
64+
assertNotNull(results);
65+
assertNotNull(results.getImages());
66+
assertTrue(results.getImages().isEmpty());
67+
}
68+
69+
@Test
70+
void testFromLineWithMultipleImages() {
71+
String json = "{\"Images\": [" +
72+
" {\"ImageName\": \"img-a\", \"ImageTag\": \"1.0\"}," +
73+
" {\"ImageName\": \"img-b\", \"ImageTag\": \"2.0\"}" +
74+
"]}";
75+
ContainersRealtimeResults results = ContainersRealtimeResults.fromLine(json);
76+
assertNotNull(results);
77+
assertEquals(2, results.getImages().size());
78+
assertEquals("img-a", results.getImages().get(0).getImageName());
79+
assertEquals("img-b", results.getImages().get(1).getImageName());
80+
}
81+
82+
// --- ContainersRealtimeImage constructor ---
83+
84+
@Test
85+
void testImageConstructorWithNullCollections() {
86+
ContainersRealtimeImage img = new ContainersRealtimeImage(
87+
"ubuntu", "20.04", "/Dockerfile", null, "ok", null);
88+
assertEquals("ubuntu", img.getImageName());
89+
assertEquals("20.04", img.getImageTag());
90+
assertEquals("/Dockerfile", img.getFilePath());
91+
assertEquals("ok", img.getStatus());
92+
assertTrue(img.getLocations().isEmpty());
93+
assertTrue(img.getVulnerabilities().isEmpty());
94+
}
95+
96+
@Test
97+
void testImageConstructorWithNonNullCollections() {
98+
RealtimeLocation loc = new RealtimeLocation(1, 0, 5);
99+
ContainersRealtimeVulnerability vuln = new ContainersRealtimeVulnerability(
100+
"CVE-2023-1234", "High");
101+
ContainersRealtimeImage img = new ContainersRealtimeImage(
102+
"alpine", "3.14", "/Dockerfile",
103+
Collections.singletonList(loc),
104+
"vulnerable",
105+
Collections.singletonList(vuln));
106+
assertEquals(1, img.getLocations().size());
107+
assertEquals(1, img.getLocations().get(0).getLine());
108+
assertEquals(1, img.getVulnerabilities().size());
109+
assertEquals("CVE-2023-1234", img.getVulnerabilities().get(0).getCve());
110+
}
111+
112+
// --- ContainersRealtimeVulnerability constructor ---
113+
114+
@Test
115+
void testVulnerabilityConstructorStoresAllFields() {
116+
ContainersRealtimeVulnerability vuln = new ContainersRealtimeVulnerability(
117+
"CVE-2022-5678", "Critical");
118+
assertEquals("CVE-2022-5678", vuln.getCve());
119+
assertEquals("Critical", vuln.getSeverity());
120+
}
121+
122+
@Test
123+
void testFromLineWithVulnerabilitiesInImage() {
124+
String json = "{\"Images\": [{" +
125+
" \"ImageName\": \"vuln-img\"," +
126+
" \"ImageTag\": \"latest\"," +
127+
" \"Vulnerabilities\": [{" +
128+
" \"CVE\": \"CVE-2021-9876\"," +
129+
" \"Severity\": \"Medium\"" +
130+
" }]" +
131+
"}]}";
132+
ContainersRealtimeResults results = ContainersRealtimeResults.fromLine(json);
133+
assertNotNull(results);
134+
assertEquals(1, results.getImages().size());
135+
assertEquals(1, results.getImages().get(0).getVulnerabilities().size());
136+
ContainersRealtimeVulnerability vuln = results.getImages().get(0).getVulnerabilities().get(0);
137+
assertEquals("CVE-2021-9876", vuln.getCve());
138+
assertEquals("Medium", vuln.getSeverity());
139+
}
140+
}

0 commit comments

Comments
 (0)