Skip to content

Commit ce97650

Browse files
committed
chore: Add more unit tests
1 parent 836e00a commit ce97650

File tree

3 files changed

+21
-22
lines changed

3 files changed

+21
-22
lines changed

src/main/java/com/endava/cats/fuzzer/contract/AbstractRequestBodyLinterFuzzer.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import io.github.ludovicianul.prettylogger.PrettyLogger;
77
import io.github.ludovicianul.prettylogger.PrettyLoggerFactory;
88
import io.swagger.v3.oas.models.Operation;
9-
import io.swagger.v3.oas.models.PathItem;
109
import io.swagger.v3.oas.models.media.MediaType;
1110
import io.swagger.v3.oas.models.parameters.RequestBody;
1211

@@ -26,7 +25,7 @@ public void process(FuzzingData data) {
2625
testCaseListener.addScenario(log, "Check if %s methods does not have a body".formatted(targetHttpMethod()));
2726
testCaseListener.addExpectedResult(log, "%s methods must define a requestBody with a valid schema".formatted(targetHttpMethod()));
2827

29-
Operation op = getOperation(data.getPathItem());
28+
Operation op = HttpMethod.getOperation(targetHttpMethod(), data.getPathItem());
3029
if (op == null) {
3130
testCaseListener.skipTest(log, "%s method not present".formatted(targetHttpMethod()));
3231
return;
@@ -58,15 +57,6 @@ public void process(FuzzingData data) {
5857
}
5958
}
6059

61-
private Operation getOperation(PathItem item) {
62-
return switch (targetHttpMethod()) {
63-
case PUT -> item.getPut();
64-
case POST -> item.getPost();
65-
case PATCH -> item.getPatch();
66-
default -> null;
67-
};
68-
}
69-
7060
@Override
7161
protected String runKey(FuzzingData data) {
7262
return data.getPath();

src/main/java/com/endava/cats/fuzzer/contract/AbstractRequestWithoutBodyLinterFuzzer.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import io.github.ludovicianul.prettylogger.PrettyLogger;
77
import io.github.ludovicianul.prettylogger.PrettyLoggerFactory;
88
import io.swagger.v3.oas.models.Operation;
9-
import io.swagger.v3.oas.models.PathItem;
109

1110
import java.util.List;
1211
import java.util.Optional;
@@ -31,7 +30,7 @@ public void process(FuzzingData data) {
3130
testCaseListener.addScenario(log, "Check if %s methods have a body".formatted(targetHttpMethod()));
3231
testCaseListener.addExpectedResult(log, "%s methods must not have a body".formatted(targetHttpMethod()));
3332

34-
Operation operation = getOperation(data.getPathItem());
33+
Operation operation = HttpMethod.getOperation(targetHttpMethod(), data.getPathItem());
3534
if (operation == null) {
3635
testCaseListener.skipTest(log, "%s method not present".formatted(targetHttpMethod()));
3736
return;
@@ -50,15 +49,6 @@ public void process(FuzzingData data) {
5049
}
5150
}
5251

53-
private Operation getOperation(PathItem item) {
54-
return switch (targetHttpMethod()) {
55-
case DELETE -> item.getDelete();
56-
case GET -> item.getGet();
57-
case HEAD -> item.getHead();
58-
default -> null;
59-
};
60-
}
61-
6252
@Override
6353
protected String runKey(FuzzingData data) {
6454
return data.getPath();

src/test/java/com/endava/cats/fuzzer/contract/OperationIdVerbPrefixLinterFuzzerTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
import org.junit.jupiter.params.ParameterizedTest;
2222
import org.junit.jupiter.params.provider.CsvSource;
2323
import org.mockito.Mockito;
24+
import org.springframework.test.util.ReflectionTestUtils;
2425

26+
import java.io.File;
27+
import java.util.List;
2528
import java.util.stream.Stream;
2629

2730
@QuarkusTest
@@ -72,6 +75,22 @@ void shouldReportInfo() {
7275
Mockito.eq("OperationId [{}] uses an allowed prefix"), Mockito.eq("getPeople"));
7376
}
7477

78+
@Test
79+
void shouldReportErrorOnCustomVerbFile() {
80+
ReflectionTestUtils.setField(namingArguments, "operationPrefixMapFile", new File("src/test/resources/verbs.properties"));
81+
namingArguments.loadVerbMapFile();
82+
PathItem pathItem = Mockito.mock(PathItem.class);
83+
Operation operation = new Operation();
84+
operation.setOperationId("getPeople");
85+
Mockito.when(pathItem.getGet()).thenReturn(operation);
86+
87+
FuzzingData data = FuzzingData.builder().pathItem(pathItem).method(HttpMethod.GET).build();
88+
operationIdVerbPrefixLinterFuzzer.fuzz(data);
89+
90+
Mockito.verify(testCaseListener, Mockito.times(1)).reportResultError(Mockito.any(), Mockito.any(), Mockito.eq("OperationId prefix mismatch"),
91+
Mockito.eq("OperationId [{}] does not start with any allowed prefix {}"), Mockito.eq("getPeople"), Mockito.eq(List.of("fail")));
92+
}
93+
7594
@Test
7695
void shouldReturnSimpleClassNameForToString() {
7796
Assertions.assertThat(operationIdVerbPrefixLinterFuzzer).hasToString(operationIdVerbPrefixLinterFuzzer.getClass().getSimpleName());

0 commit comments

Comments
 (0)