Skip to content

Commit 2bf7eaf

Browse files
committed
#23 Clean Test Code
Signed-off-by: Sven Strittmatter <sven.strittmatter@iteratec.com>
1 parent 85e5cf5 commit 2bf7eaf

File tree

1 file changed

+112
-122
lines changed

1 file changed

+112
-122
lines changed

src/test/java/io/securecodebox/persistence/defectdojo/service/FindingServiceTest.java

Lines changed: 112 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import com.fasterxml.jackson.core.JsonProcessingException;
88
import io.securecodebox.persistence.defectdojo.config.Config;
9-
import org.junit.jupiter.api.BeforeEach;
109
import org.junit.jupiter.api.Test;
1110
import org.springframework.http.MediaType;
1211
import org.springframework.test.web.client.MockRestServiceServer;
@@ -21,135 +20,126 @@
2120

2221
// This test is sufficient for all services (except user profile) as all the code is generic
2322
class FindingServiceTest {
23+
private static final String FINDING_RESPONSE = """
24+
{
25+
"count": 1,
26+
"next": null,
27+
"previous": null,
28+
"results":
29+
[
30+
{
31+
"id": 42,
32+
"tags": [],
33+
"request_response": {
34+
"req_resp": []
35+
},
36+
"accepted_risks": [],
37+
"push_to_jira": false,
38+
"age": 145,
39+
"sla_days_remaining": null,
40+
"finding_meta": [],
41+
"related_fields": null,
42+
"jira_creation": null,
43+
"jira_change": null,
44+
"display_status": "Active, Verified",
45+
"finding_groups": [],
46+
"title": "Open Port: 9929/TCP",
47+
"date": "2021-03-18",
48+
"sla_start_date": null,
49+
"cwe": 0,
50+
"cve": null,
51+
"cvssv3": null,
52+
"cvssv3_score": null,
53+
"url": null,
54+
"severity": "Info",
55+
"description": "### Host\\n\\n**IP Address:** 198.51.100.0\\n**FQDN:** scanme.nmap.org\\n\\n\\n**Port/Protocol:** 9929/tcp\\n\\n\\n\\n\\n",
56+
"mitigation": "N/A",
57+
"impact": "No impact provided",
58+
"steps_to_reproduce": null,
59+
"severity_justification": null,
60+
"references": null,
61+
"is_template": false,
62+
"active": true,
63+
"verified": true,
64+
"false_p": false,
65+
"duplicate": false,
66+
"out_of_scope": false,
67+
"risk_accepted": false,
68+
"under_review": false,
69+
"last_status_update": "2021-07-21T12:43:36.628994Z",
70+
"under_defect_review": false,
71+
"is_mitigated": false,
72+
"thread_id": 0,
73+
"mitigated": null,
74+
"numerical_severity": "S4",
75+
"last_reviewed": "2021-07-21T12:43:36.545348Z",
76+
"line_number": null,
77+
"sourcefilepath": null,
78+
"sourcefile": null,
79+
"param": null,
80+
"payload": null,
81+
"hash_code": "8dbaad23d4056f0a97bb8f487795fe392b4124f28d4049d16430e43415f1c219",
82+
"line": null,
83+
"file_path": null,
84+
"component_name": null,
85+
"component_version": null,
86+
"static_finding": false,
87+
"dynamic_finding": true,
88+
"created": "2021-07-21T12:43:36.549669Z",
89+
"scanner_confidence": null,
90+
"unique_id_from_tool": null,
91+
"vuln_id_from_tool": null,
92+
"sast_source_object": null,
93+
"sast_sink_object": null,
94+
"sast_source_line": null,
95+
"sast_source_file_path": null,
96+
"nb_occurences": null,
97+
"publish_date": null,
98+
"test": 222,
99+
"duplicate_finding": null,
100+
"review_requested_by": null,
101+
"defect_review_requested_by": null,
102+
"mitigated_by": null,
103+
"reporter": 5,
104+
"last_reviewed_by": 5,
105+
"sonarqube_issue": null,
106+
"endpoints": [
107+
875
108+
],
109+
"endpoint_status": [
110+
8640
111+
],
112+
"reviewers": [],
113+
"notes": [],
114+
"files": [],
115+
"found_by": [
116+
132
117+
]
118+
}
119+
],
120+
"prefetch": {}
121+
}
122+
""";
24123

25-
Config config;
26-
FindingService underTest;
27-
MockRestServiceServer mockServer;
124+
private final Config config = new Config("https://defectdojo.example.com", "abc", 42);
125+
private final FindingService sut = new FindingService(config);
126+
private final MockRestServiceServer server = MockRestServiceServer.createServer(sut.getRestTemplate());
28127

29-
String findingResponse = """
30-
{
31-
"count": 1,
32-
"next": null,
33-
"previous": null,
34-
"results":
35-
[
36-
{
37-
"id": 42,
38-
"tags": [],
39-
"request_response": {
40-
"req_resp": []
41-
},
42-
"accepted_risks": [],
43-
"push_to_jira": false,
44-
"age": 145,
45-
"sla_days_remaining": null,
46-
"finding_meta": [],
47-
"related_fields": null,
48-
"jira_creation": null,
49-
"jira_change": null,
50-
"display_status": "Active, Verified",
51-
"finding_groups": [],
52-
"title": "Open Port: 9929/TCP",
53-
"date": "2021-03-18",
54-
"sla_start_date": null,
55-
"cwe": 0,
56-
"cve": null,
57-
"cvssv3": null,
58-
"cvssv3_score": null,
59-
"url": null,
60-
"severity": "Info",
61-
"description": "### Host\\n\\n**IP Address:** 198.51.100.0\\n**FQDN:** scanme.nmap.org\\n\\n\\n**Port/Protocol:** 9929/tcp\\n\\n\\n\\n\\n",
62-
"mitigation": "N/A",
63-
"impact": "No impact provided",
64-
"steps_to_reproduce": null,
65-
"severity_justification": null,
66-
"references": null,
67-
"is_template": false,
68-
"active": true,
69-
"verified": true,
70-
"false_p": false,
71-
"duplicate": false,
72-
"out_of_scope": false,
73-
"risk_accepted": false,
74-
"under_review": false,
75-
"last_status_update": "2021-07-21T12:43:36.628994Z",
76-
"under_defect_review": false,
77-
"is_mitigated": false,
78-
"thread_id": 0,
79-
"mitigated": null,
80-
"numerical_severity": "S4",
81-
"last_reviewed": "2021-07-21T12:43:36.545348Z",
82-
"line_number": null,
83-
"sourcefilepath": null,
84-
"sourcefile": null,
85-
"param": null,
86-
"payload": null,
87-
"hash_code": "8dbaad23d4056f0a97bb8f487795fe392b4124f28d4049d16430e43415f1c219",
88-
"line": null,
89-
"file_path": null,
90-
"component_name": null,
91-
"component_version": null,
92-
"static_finding": false,
93-
"dynamic_finding": true,
94-
"created": "2021-07-21T12:43:36.549669Z",
95-
"scanner_confidence": null,
96-
"unique_id_from_tool": null,
97-
"vuln_id_from_tool": null,
98-
"sast_source_object": null,
99-
"sast_sink_object": null,
100-
"sast_source_line": null,
101-
"sast_source_file_path": null,
102-
"nb_occurences": null,
103-
"publish_date": null,
104-
"test": 222,
105-
"duplicate_finding": null,
106-
"review_requested_by": null,
107-
"defect_review_requested_by": null,
108-
"mitigated_by": null,
109-
"reporter": 5,
110-
"last_reviewed_by": 5,
111-
"sonarqube_issue": null,
112-
"endpoints": [
113-
875
114-
],
115-
"endpoint_status": [
116-
8640
117-
],
118-
"reviewers": [],
119-
"notes": [],
120-
"files": [],
121-
"found_by": [
122-
132
123-
]
124-
}
125-
],
126-
"prefetch": {}
127-
}
128-
""";
129-
130-
@BeforeEach
131-
void setup() {
132-
config = new Config("https://defectdojo.example.com", "abc", 42);
133-
underTest = new FindingService(config);
134-
mockServer = MockRestServiceServer.createServer(underTest.getRestTemplate());
135-
}
136128

137129
@Test
138-
void deserializeList() throws JsonProcessingException {
139-
var foo = underTest.deserializeList(findingResponse);
130+
void deserializeList_shouldResultExactlyOneResult() throws JsonProcessingException {
131+
var result = sut.deserializeList(FINDING_RESPONSE);
140132

141-
assertEquals(1, foo.getCount());
133+
assertEquals(1, result.getCount());
142134
}
143135

144136
@Test
145-
void testSearch() throws JsonProcessingException, URISyntaxException {
146-
var url = config.getUrl() + "/api/v2/" + underTest.getUrlPath() + "/?offset=0&limit=100";
147-
mockServer.expect(requestTo(url)).andRespond(withSuccess(findingResponse, MediaType.APPLICATION_JSON));
148-
149-
var expected = underTest.deserializeList(findingResponse).getResults();
150-
var actual = underTest.search();
137+
void search() throws JsonProcessingException, URISyntaxException {
138+
final var url = String.format("%s/api/v2/%s/?offset=0&limit=100", config.getUrl(), sut.getUrlPath());
139+
server.expect(requestTo(url))
140+
.andRespond(withSuccess(FINDING_RESPONSE, MediaType.APPLICATION_JSON));
151141

152-
mockServer.verify();
153-
assertIterableEquals(expected, actual);
142+
assertIterableEquals(sut.deserializeList(FINDING_RESPONSE).getResults(), sut.search());
143+
server.verify();
154144
}
155145
}

0 commit comments

Comments
 (0)