Skip to content
This repository was archived by the owner on Feb 26, 2021. It is now read-only.

Commit 7872e25

Browse files
committed
fix: use latest in case no testName is given
1 parent fccdfaa commit 7872e25

1 file changed

Lines changed: 12 additions & 9 deletions

File tree

  • scb-persistenceproviders/defectdojo-persistenceprovider/src/main/java/io/securecodebox/persistence

scb-persistenceproviders/defectdojo-persistenceprovider/src/main/java/io/securecodebox/persistence/DefectDojoService.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -256,16 +256,14 @@ public String getFilename() {
256256
}
257257
/**
258258
* When DefectDojo >= 1.5.4 is used, testType can be given. Add testName in case DefectDojo >= 1.5.4 is used
259+
* Using testName for each branch leads to multiple issues in DefectDojo, so it is not recommended
259260
*/
260261
private Optional<Long> getTestIdByEngagementName(long engagementId, String testName, long offset) {
261262
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(defectDojoUrl + "/api/v2/tests")
262263
.queryParam("engagement", Long.toString(engagementId))
263264
.queryParam("limit", Long.toString(50L))
264265
.queryParam("offset", Long.toString(offset));
265-
if(testName == null) {
266-
LOG.warn("TestName must be set unique, e.g. with time");
267-
return Optional.empty();
268-
} else {
266+
if(testName != null && !testName.isEmpty()) {
269267
builder.queryParam("testType", testName);
270268
}
271269

@@ -275,20 +273,25 @@ private Optional<Long> getTestIdByEngagementName(long engagementId, String testN
275273
ResponseEntity<DefectDojoResponse<TestResponse>> response = restTemplate.exchange(builder.toUriString(), HttpMethod.GET, engagementRequest, new ParameterizedTypeReference<DefectDojoResponse<TestResponse>>(){});
276274

277275
Optional<Long> testResponseId = null;
278-
for(TestResponse test : response.getBody().getResults()){
279-
if(testName == null || test.getTitle().equals(testName)){
276+
Optional<Long> latestTestResponseId = Optional.empty();
277+
for(TestResponse test : response.getBody().getResults()) {
278+
if(testName == null) {
279+
if(!latestTestResponseId.isPresent() || latestTestResponseId.get() < test.getId()) {
280+
latestTestResponseId = Optional.of(test.getId());
281+
}
282+
} else if (test.getTitle() != null && test.getTitle().equals(testName)) {
280283
testResponseId = Optional.of(test.getId());
281284
}
282285
}
283286
if(testResponseId != null) {
284287
return testResponseId;
285288
}
286289

287-
if(response.getBody().getNext() != null){
290+
if(response.getBody().getNext() != null) {
288291
return getTestIdByEngagementName(engagementId, testName, offset + 1);
289292
}
290-
LOG.warn("Test with name '{}' not found.", testName);
291-
return Optional.empty();
293+
LOG.info("Test with name '{}' not found, using latest.", testName);
294+
return latestTestResponseId;
292295
}
293296
/*
294297
* Be aware that using latest might results in "conflicting" "latest" in case a new test is added while requesting latest

0 commit comments

Comments
 (0)