use of com.endava.cats.model.CatsResponse in project cats by Endava.
the class ServiceCallerTest method givenAServer_whenDoingAPostCall_thenProperDetailsAreBeingReturned.
@Test
void givenAServer_whenDoingAPostCall_thenProperDetailsAreBeingReturned() {
serviceCaller.initHttpClient();
serviceCaller.initRateLimiter();
CatsResponse catsResponse = serviceCaller.call(ServiceData.builder().relativePath("/pets").payload("{'field':'oldValue'}").httpMethod(HttpMethod.POST).headers(Collections.singleton(CatsHeader.builder().name("header").value("header").build())).build());
Assertions.assertThat(catsResponse.responseCodeAsString()).isEqualTo("200");
Assertions.assertThat(catsResponse.getBody()).isEqualTo("{'result':'OK'}");
}
use of com.endava.cats.model.CatsResponse in project cats by Endava.
the class TestCaseListenerTest method shouldCallInfoInsteadOfWarnWhenIgnoreCodeSupplied.
@ParameterizedTest
@CsvSource({ "true,false,false", "false,true,false", "true,true,true" })
void shouldCallInfoInsteadOfWarnWhenIgnoreCodeSupplied(boolean ignoreResponseCodes, boolean ignoreUndocumentedRespCode, boolean ignoreResponseBodyCheck) {
Mockito.when(ignoreArguments.isIgnoredResponseCode(Mockito.anyString())).thenReturn(ignoreResponseCodes);
Mockito.when(ignoreArguments.isIgnoreResponseCodeUndocumentedCheck()).thenReturn(ignoreUndocumentedRespCode);
Mockito.when(ignoreArguments.isIgnoreResponseBodyCheck()).thenReturn(ignoreResponseBodyCheck);
CatsResponse response = CatsResponse.builder().body("{}").responseCode(200).build();
FuzzingData data = Mockito.mock(FuzzingData.class);
Mockito.when(data.getResponseCodes()).thenReturn(Set.of("300", "400"));
Mockito.when(data.getResponses()).thenReturn(Map.of("300", Collections.emptyList()));
prepareTestCaseListenerSimpleSetup(response);
testCaseListener.reportResult(logger, data, response, ResponseCodeFamily.TWOXX);
Mockito.verify(executionStatisticsListener, Mockito.never()).increaseWarns();
Mockito.verify(executionStatisticsListener, Mockito.never()).increaseErrors();
Mockito.verify(executionStatisticsListener, Mockito.never()).increaseSkipped();
Mockito.verify(executionStatisticsListener, Mockito.times(1)).increaseSuccess();
MDC.remove(TestCaseListener.ID);
}
use of com.endava.cats.model.CatsResponse in project cats by Endava.
the class TestCaseListenerTest method givenADocumentedResponseThatIsNotExpected_whenReportingTheResult_thenTheResultIsCorrectlyReported.
@Test
void givenADocumentedResponseThatIsNotExpected_whenReportingTheResult_thenTheResultIsCorrectlyReported() {
FuzzingData data = Mockito.mock(FuzzingData.class);
CatsResponse response = Mockito.mock(CatsResponse.class);
Mockito.when(response.getBody()).thenReturn("{'test':1}");
Mockito.when(data.getResponseCodes()).thenReturn(Collections.singleton("400"));
Mockito.when(data.getResponses()).thenReturn(Collections.singletonMap("200", Collections.singletonList("test")));
Mockito.when(response.responseCodeAsString()).thenReturn("400");
testCaseListener.createAndExecuteTest(logger, fuzzer, () -> testCaseListener.reportResult(logger, data, response, ResponseCodeFamily.TWOXX));
Mockito.verify(executionStatisticsListener, Mockito.times(1)).increaseErrors();
Mockito.verify(executionStatisticsListener, Mockito.never()).increaseSuccess();
}
use of com.endava.cats.model.CatsResponse in project cats by Endava.
the class TestCaseListenerTest method shouldReportInfoWhenResponseCode200IsExpectedAndResponseBodyIsEmpty.
@ParameterizedTest
@CsvSource({ "{}", "[]", "''", "' '" })
void shouldReportInfoWhenResponseCode200IsExpectedAndResponseBodyIsEmpty(String body) {
FuzzingData data = Mockito.mock(FuzzingData.class);
CatsResponse response = Mockito.mock(CatsResponse.class);
TestCaseListener spyListener = Mockito.spy(testCaseListener);
Mockito.when(response.getBody()).thenReturn(body);
Mockito.when(data.getResponseCodes()).thenReturn(Sets.newHashSet("200", "400"));
Mockito.when(data.getResponses()).thenReturn(Collections.emptyMap());
Mockito.when(response.responseCodeAsString()).thenReturn("400");
spyListener.createAndExecuteTest(logger, fuzzer, () -> spyListener.reportResult(logger, data, response, ResponseCodeFamily.FOURXX));
Mockito.verify(executionStatisticsListener, Mockito.times(1)).increaseSuccess();
Mockito.verify(spyListener, Mockito.times(1)).reportInfo(logger, "Response matches expected result. Response code [{}] is documented and response body matches the corresponding schema.", response.responseCodeAsString());
}
use of com.endava.cats.model.CatsResponse in project cats by Endava.
the class ServiceCallerTest method givenAServer_whenDoingAGetCall_thenProperDetailsAreBeingReturned.
@Test
void givenAServer_whenDoingAGetCall_thenProperDetailsAreBeingReturned() {
serviceCaller.initHttpClient();
serviceCaller.initRateLimiter();
CatsResponse catsResponse = serviceCaller.call(ServiceData.builder().relativePath("/pets/{id}").payload("{'id':'1','limit':2,'no':null}").httpMethod(HttpMethod.GET).headers(Collections.singleton(CatsHeader.builder().name("header").value("header").build())).queryParams(Set.of("limit", "no")).build());
wireMockServer.verify(WireMock.getRequestedFor(WireMock.urlEqualTo("/pets/1?limit=2&no")));
Assertions.assertThat(catsResponse.responseCodeAsString()).isEqualTo("200");
Assertions.assertThat(catsResponse.getBody()).isEqualTo("{'pet':'pet'}");
}
Aggregations