Skip to content

Commit 5268acd

Browse files
the-simmonWeltraumschaf
authored andcommitted
Add unit test that tests GenericDefectDojoService
Signed-off-by: Simon Hülkenberg <simon.huelkenberg@iteratec.com>
1 parent d9a1385 commit 5268acd

File tree

4 files changed

+36
-3
lines changed

4 files changed

+36
-3
lines changed

build.gradle

+4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ repositories {
1515
dependencies {
1616
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
1717
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
18+
testImplementation 'org.springframework:spring-test:5.3.23'
19+
testImplementation 'org.hamcrest:java-hamcrest:2.0.0.0'
20+
21+
1822

1923
implementation group: 'org.springframework', name: 'spring-web', version: '5.3.9'
2024
implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.13'

src/main/java/io/securecodebox/persistence/defectdojo/models/DefectDojoModel.java

+2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
package io.securecodebox.persistence.defectdojo.models;
1919

2020
import java.util.Map;
21+
import lombok.EqualsAndHashCode;
2122

23+
@EqualsAndHashCode
2224
abstract public class DefectDojoModel {
2325
public abstract boolean equalsQueryString(Map<String, Object> queryParams);
2426
}

src/main/java/io/securecodebox/persistence/defectdojo/service/GenericDefectDojoService.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,16 @@
5353
import java.net.URISyntaxException;
5454
import java.nio.charset.StandardCharsets;
5555
import java.util.*;
56+
import lombok.Getter;
5657

5758
abstract public class GenericDefectDojoService<T extends DefectDojoModel> {
5859
protected DefectDojoConfig defectDojoConfig;
5960

6061
protected ObjectMapper objectMapper;
6162
protected ObjectMapper searchStringMapper;
63+
64+
@Getter
65+
protected RestTemplate restTemplate;
6266

6367
public GenericDefectDojoService(DefectDojoConfig config) {
6468
this.defectDojoConfig = config;
@@ -72,6 +76,8 @@ public GenericDefectDojoService(DefectDojoConfig config) {
7276
this.searchStringMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
7377
this.searchStringMapper.coercionConfigFor(Engagement.Status.class).setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsNull);
7478
this.searchStringMapper.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT);
79+
80+
this.restTemplate = this.setupRestTemplate();
7581
}
7682

7783

@@ -95,7 +101,7 @@ private HttpHeaders getDefectDojoAuthorizationHeaders() {
95101
return headers;
96102
}
97103

98-
protected RestTemplate getRestTemplate() {
104+
private RestTemplate setupRestTemplate() {
99105
RestTemplate restTemplate;
100106

101107
if (System.getProperty("http.proxyUser") != null && System.getProperty("http.proxyPassword") != null) {

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

+23-2
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,24 @@
22

33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import io.securecodebox.persistence.defectdojo.config.DefectDojoConfig;
5-
import io.securecodebox.persistence.defectdojo.models.Finding;
5+
import java.net.URISyntaxException;
66
import org.junit.jupiter.api.BeforeEach;
77
import org.junit.jupiter.api.Test;
8+
import org.springframework.test.web.client.MockRestServiceServer;
9+
import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
10+
11+
12+
813

914
import static org.junit.jupiter.api.Assertions.*;
15+
import org.springframework.http.MediaType;
16+
import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
1017

11-
class FindingServiceTest {
18+
class FindingServiceTest{
1219

1320
DefectDojoConfig config;
1421
FindingService underTest;
22+
MockRestServiceServer mockServer;
1523

1624
String findingResponse = "{\n" +
1725
" \"count\": 1,\n" +
@@ -115,6 +123,7 @@ class FindingServiceTest {
115123
void setup() {
116124
config = new DefectDojoConfig("https://defectdojo.example.com", "abc", "test-user", 42);
117125
underTest = new FindingService(config);
126+
mockServer = MockRestServiceServer.createServer(underTest.getRestTemplate());
118127
}
119128

120129
@Test
@@ -123,4 +132,16 @@ void deserializeList() throws JsonProcessingException {
123132

124133
assertEquals(1, foo.getCount());
125134
}
135+
136+
@Test
137+
void testSearch() throws JsonProcessingException, URISyntaxException {
138+
var url = config.getUrl() + "/api/v2/" + underTest.getUrlPath() + "/?offset=0&limit=100";
139+
mockServer.expect(requestTo(url)).andRespond(withSuccess(findingResponse, MediaType.APPLICATION_JSON));
140+
141+
var expected = underTest.deserializeList(findingResponse).getResults();
142+
var actual = underTest.search();
143+
144+
mockServer.verify();
145+
assertIterableEquals(expected, actual);
146+
}
126147
}

0 commit comments

Comments
 (0)