Search in sources :

Example 6 with MockRequest

use of com.arbindo.mimock.manage.mimocks.models.request.MockRequest in project mimock by arbindo.

the class RequestModelMapperTest method shouldMapRequestModelToProcessedRequestModal.

@Test
void shouldMapRequestModelToProcessedRequestModal() {
    MockRequest request = MocksGenerator.createMockRequest();
    String requestHeadersAsString = RandomDataGenerator.generateRequestHeadersAsString();
    String responseHeadersAsString = RandomDataGenerator.generateResponseHeadersAsString();
    String requestBodyAsString = RandomDataGenerator.generateRequestBodyAsString();
    MockRequest requestToBeMapped = MockRequest.builder().name(request.getName()).description(request.getDescription()).route(request.getRoute()).httpMethod(request.getHttpMethod()).statusCode(request.getStatusCode()).responseContentType(request.getResponseContentType()).queryParams(request.getQueryParams()).requestHeader(requestHeadersAsString).shouldDoExactHeaderMatching(request.isHeaderMatchingSetToStrict()).requestBody(requestBodyAsString).requestBodyType(request.getRequestBodyType()).responseHeaders(responseHeadersAsString).expectedTextResponse(request.getExpectedTextResponse()).build();
    ProcessedMockRequest expectedRequest = ProcessedMockRequest.builder().name(request.getName()).description(request.getDescription()).route(request.getRoute()).httpMethod(request.getHttpMethod()).statusCode(request.getStatusCode()).responseContentType(request.getResponseContentType()).queryParams(request.getQueryParams()).requestHeader(JsonMapper.convertJSONStringToMapWithLowerCaseKeys(requestHeadersAsString)).shouldDoExactHeaderMatching(request.isHeaderMatchingSetToStrict()).requestBody(JsonMapper.convertJSONStringToMapWithLowerCaseKeys(requestBodyAsString)).requestBodyType(request.getRequestBodyType()).responseHeaders(JsonMapper.convertJSONStringToMapWithLowerCaseKeys(responseHeadersAsString)).expectedTextResponse(request.getExpectedTextResponse()).build();
    ProcessedMockRequest mappedRequest = RequestModelMapper.map(requestToBeMapped);
    assertEquals(expectedRequest.getName(), mappedRequest.getName());
    assertEquals(expectedRequest.getDescription(), mappedRequest.getDescription());
    assertEquals(expectedRequest.getRoute(), mappedRequest.getRoute());
    assertEquals(expectedRequest.getHttpMethod(), mappedRequest.getHttpMethod());
    assertEquals(expectedRequest.getStatusCode(), mappedRequest.getStatusCode());
    assertEquals(expectedRequest.getResponseContentType(), mappedRequest.getResponseContentType());
    assertEquals(expectedRequest.getQueryParams(), mappedRequest.getQueryParams());
    assertEquals(expectedRequest.getRequestHeader(), mappedRequest.getRequestHeader());
    assertEquals(expectedRequest.getShouldDoExactHeaderMatching(), mappedRequest.getShouldDoExactHeaderMatching());
    assertEquals(expectedRequest.getRequestBody(), mappedRequest.getRequestBody());
    assertEquals(expectedRequest.getRequestBodyType(), mappedRequest.getRequestBodyType());
    assertEquals(expectedRequest.getResponseHeaders(), mappedRequest.getResponseHeaders());
    assertEquals(expectedRequest.getExpectedTextResponse(), mappedRequest.getExpectedTextResponse());
}
Also used : ProcessedMockRequest(com.arbindo.mimock.manage.mimocks.models.request.ProcessedMockRequest) MockRequest(com.arbindo.mimock.manage.mimocks.models.request.MockRequest) ProcessedMockRequest(com.arbindo.mimock.manage.mimocks.models.request.ProcessedMockRequest) Test(org.junit.jupiter.api.Test)

Example 7 with MockRequest

use of com.arbindo.mimock.manage.mimocks.models.request.MockRequest in project mimock by arbindo.

the class MockManagementControllerTest method shouldReturnHttpBadRequest_CreateMockApi_WithInvalidParametersForQueryParamsInRequest_ReturnsValidationErrors.

@Test
void shouldReturnHttpBadRequest_CreateMockApi_WithInvalidParametersForQueryParamsInRequest_ReturnsValidationErrors() throws Exception {
    // Arrange
    MockMultipartFile file = getMockMultipartFile();
    MockRequest mockRequest = createMockRequestWithFile(file);
    String route = UrlConfig.MOCKS_PATH;
    // Modify the MockRequest.QueryParams with longer value
    mockRequest.setQueryParams(generateRandomAlphabeticString(2000));
    // Act and Assert
    mockMvc.perform(multipart(route).file(file).param("name", mockRequest.getName()).param("route", mockRequest.getRoute()).param("httpMethod", mockRequest.getHttpMethod()).param("responseContentType", mockRequest.getResponseContentType()).param("statusCode", String.valueOf(mockRequest.getStatusCode())).param("expectedTextResponse", mockRequest.getExpectedTextResponse()).param("queryParams", mockRequest.getQueryParams()).param("description", mockRequest.getDescription())).andExpect(status().isBadRequest()).andExpect(response -> assertNotNull(response.getResolvedException())).andExpect(response -> assertTrue(response.getResolvedException().getMessage().contains("QueryParams can be maximum of 1024 characters"))).andReturn();
}
Also used : MockMultipartFile(org.springframework.mock.web.MockMultipartFile) Messages(com.arbindo.mimock.common.constants.Messages) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) MockManagementService(com.arbindo.mimock.manage.mimocks.service.MockManagementService) GenericResponseWrapper(com.arbindo.mimock.common.wrapper.GenericResponseWrapper) UserDetailsService(org.springframework.security.core.userdetails.UserDetailsService) Autowired(org.springframework.beans.factory.annotation.Autowired) DatabaseStartupValidator(org.springframework.jdbc.support.DatabaseStartupValidator) ArrayList(java.util.ArrayList) MockMvc(org.springframework.test.web.servlet.MockMvc) DataSourceAutoConfiguration(org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration) DefaultHttpInterceptor(com.arbindo.mimock.interceptor.DefaultHttpInterceptor) EmptySource(org.junit.jupiter.params.provider.EmptySource) MvcResult(org.springframework.test.web.servlet.MvcResult) DataSource(javax.sql.DataSource) SecurityAutoConfiguration(org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration) Pageable(org.springframework.data.domain.Pageable) JsonMapper.convertObjectToJsonString(com.arbindo.mimock.helpers.general.JsonMapper.convertObjectToJsonString) MockBean(org.springframework.boot.test.mock.mockito.MockBean) MocksGenerator(com.arbindo.mimock.helpers.entities.MocksGenerator) JpaRepositoriesAutoConfiguration(org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration) UrlConfig(com.arbindo.mimock.common.constants.UrlConfig) JwtRequestFilter(com.arbindo.mimock.security.JwtRequestFilter) EnableAutoConfiguration(org.springframework.boot.autoconfigure.EnableAutoConfiguration) Status(com.arbindo.mimock.manage.mimocks.enums.Status) ProcessedMockRequest(com.arbindo.mimock.manage.mimocks.models.request.ProcessedMockRequest) UUID(java.util.UUID) MockMvcResultMatchers(org.springframework.test.web.servlet.result.MockMvcResultMatchers) Page(org.springframework.data.domain.Page) MockMvcRequestBuilders(org.springframework.test.web.servlet.request.MockMvcRequestBuilders) MockMultipartFile(org.springframework.mock.web.MockMultipartFile) RandomDataGenerator.generateRandomAlphabeticString(com.arbindo.mimock.helpers.general.RandomDataGenerator.generateRandomAlphabeticString) MockRequest(com.arbindo.mimock.manage.mimocks.models.request.MockRequest) Test(org.junit.jupiter.api.Test) HttpStatus(org.springframework.http.HttpStatus) Mockito(org.mockito.Mockito) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) List(java.util.List) AutoConfigureMockMvc(org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc) WebMvcTest(org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest) MockMultipartHttpServletRequestBuilder(org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder) Assertions(org.junit.jupiter.api.Assertions) UserDetailsServiceAutoConfiguration(org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration) NullSource(org.junit.jupiter.params.provider.NullSource) Mock(com.arbindo.mimock.entities.Mock) PageImpl(org.springframework.data.domain.PageImpl) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ProcessedMockRequest(com.arbindo.mimock.manage.mimocks.models.request.ProcessedMockRequest) MockRequest(com.arbindo.mimock.manage.mimocks.models.request.MockRequest) JsonMapper.convertObjectToJsonString(com.arbindo.mimock.helpers.general.JsonMapper.convertObjectToJsonString) RandomDataGenerator.generateRandomAlphabeticString(com.arbindo.mimock.helpers.general.RandomDataGenerator.generateRandomAlphabeticString) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) WebMvcTest(org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest)

Example 8 with MockRequest

use of com.arbindo.mimock.manage.mimocks.models.request.MockRequest in project mimock by arbindo.

the class MockManagementControllerTest method shouldReturnHttpCreated_CreateMockApi_ReturnsValidMockData.

@Test
void shouldReturnHttpCreated_CreateMockApi_ReturnsValidMockData() throws Exception {
    // Arrange
    MockMultipartFile file = getMockMultipartFile();
    MockRequest mockRequest = createMockRequestWithFile(file);
    Mock createdMock = generateMock(mockRequest);
    String route = UrlConfig.MOCKS_PATH;
    lenient().when(mockManagementService.createMock(any(ProcessedMockRequest.class))).thenReturn(createdMock);
    final String location = "http://localhost" + route + "/" + createdMock.getId();
    GenericResponseWrapper<Mock> genericResponseWrapper = getGenericResponseWrapper(HttpStatus.CREATED, Messages.createResourceSuccess(location), createdMock);
    String expectedResponseBody = convertObjectToJsonString(genericResponseWrapper);
    String expectedContentType = "application/json";
    // Act
    MvcResult result = mockMvc.perform(multipart(route).file(file).param("name", mockRequest.getName()).param("route", mockRequest.getRoute()).param("httpMethod", mockRequest.getHttpMethod()).param("responseContentType", mockRequest.getResponseContentType()).param("statusCode", String.valueOf(mockRequest.getStatusCode())).param("expectedTextResponse", mockRequest.getExpectedTextResponse()).param("description", mockRequest.getDescription())).andExpect(status().isCreated()).andExpect(content().contentType(expectedContentType)).andReturn();
    // Assert
    assertEquals(expectedResponseBody, result.getResponse().getContentAsString());
}
Also used : MockMultipartFile(org.springframework.mock.web.MockMultipartFile) ProcessedMockRequest(com.arbindo.mimock.manage.mimocks.models.request.ProcessedMockRequest) ProcessedMockRequest(com.arbindo.mimock.manage.mimocks.models.request.ProcessedMockRequest) MockRequest(com.arbindo.mimock.manage.mimocks.models.request.MockRequest) JsonMapper.convertObjectToJsonString(com.arbindo.mimock.helpers.general.JsonMapper.convertObjectToJsonString) RandomDataGenerator.generateRandomAlphabeticString(com.arbindo.mimock.helpers.general.RandomDataGenerator.generateRandomAlphabeticString) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) MvcResult(org.springframework.test.web.servlet.MvcResult) Mock(com.arbindo.mimock.entities.Mock) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) WebMvcTest(org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest)

Example 9 with MockRequest

use of com.arbindo.mimock.manage.mimocks.models.request.MockRequest in project mimock by arbindo.

the class MockManagementControllerTest method shouldReturnHttpOk_UpdateMockByIdApi_ReturnsValidMockData.

@Test
void shouldReturnHttpOk_UpdateMockByIdApi_ReturnsValidMockData() throws Exception {
    // Arrange
    MockMultipartFile file = getMockMultipartFile();
    MockRequest mockRequest = createMockRequestWithFile(file);
    Mock mock = generateMock(mockRequest);
    String route = UrlConfig.MOCKS_PATH + "/" + mock.getId();
    lenient().when(mockManagementService.updateMock(anyString(), any(ProcessedMockRequest.class))).thenReturn(mock);
    GenericResponseWrapper<Mock> genericResponseWrapper = getGenericResponseWrapper(HttpStatus.OK, Messages.UPDATE_RESOURCE_SUCCESS, mock);
    String expectedResponseBody = convertObjectToJsonString(genericResponseWrapper);
    String expectedContentType = "application/json";
    // Act
    MockMultipartHttpServletRequestBuilder builder = MockMvcRequestBuilders.multipart(route);
    builder.with(request -> {
        request.setMethod("PUT");
        return request;
    });
    MvcResult result = mockMvc.perform(builder.file(file).param("name", mockRequest.getName()).param("route", mockRequest.getRoute()).param("httpMethod", mockRequest.getHttpMethod()).param("requestHeader", "{\"x-auth-token\": \"123e4567-e89b-12d3-a456-426614174000\"}").param("shouldDoExactHeaderMatching", "false").param("requestBody", "{\"name\": \"blog\", \"auto_init\": true, \"private\": true, \"gitignore_template\": \"nanoc\"}").param("responseHeaders", "{\"Content-Type\": \"application/json\"}").param("responseContentType", mockRequest.getResponseContentType()).param("statusCode", String.valueOf(mockRequest.getStatusCode())).param("expectedTextResponse", mockRequest.getExpectedTextResponse()).param("description", mockRequest.getDescription())).andExpect(status().isOk()).andExpect(content().contentType(expectedContentType)).andReturn();
    // Assert
    assertEquals(expectedResponseBody, result.getResponse().getContentAsString());
}
Also used : MockMultipartFile(org.springframework.mock.web.MockMultipartFile) ProcessedMockRequest(com.arbindo.mimock.manage.mimocks.models.request.ProcessedMockRequest) MockMultipartHttpServletRequestBuilder(org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder) ProcessedMockRequest(com.arbindo.mimock.manage.mimocks.models.request.ProcessedMockRequest) MockRequest(com.arbindo.mimock.manage.mimocks.models.request.MockRequest) JsonMapper.convertObjectToJsonString(com.arbindo.mimock.helpers.general.JsonMapper.convertObjectToJsonString) RandomDataGenerator.generateRandomAlphabeticString(com.arbindo.mimock.helpers.general.RandomDataGenerator.generateRandomAlphabeticString) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) MvcResult(org.springframework.test.web.servlet.MvcResult) Mock(com.arbindo.mimock.entities.Mock) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) WebMvcTest(org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest)

Example 10 with MockRequest

use of com.arbindo.mimock.manage.mimocks.models.request.MockRequest in project mimock by arbindo.

the class MockManagementControllerTest method shouldReturnHttpBadRequest_CreateMockApi_ReturnsNullMockData.

@Test
void shouldReturnHttpBadRequest_CreateMockApi_ReturnsNullMockData() throws Exception {
    // Arrange
    MockMultipartFile file = getMockMultipartFile();
    MockRequest mockRequest = createMockRequestWithFile(file);
    String route = UrlConfig.MOCKS_PATH;
    lenient().when(mockManagementService.createMock(any(ProcessedMockRequest.class))).thenReturn(null);
    GenericResponseWrapper<Mock> genericResponseWrapper = getGenericResponseWrapper(HttpStatus.BAD_REQUEST, Messages.CREATE_RESOURCE_FAILED, null);
    String expectedResponseBody = convertObjectToJsonString(genericResponseWrapper);
    String expectedContentType = "application/json";
    // Act
    MvcResult result = mockMvc.perform(multipart(route).file(file).param("name", mockRequest.getName()).param("route", mockRequest.getRoute()).param("httpMethod", mockRequest.getHttpMethod()).param("responseContentType", mockRequest.getResponseContentType()).param("statusCode", String.valueOf(mockRequest.getStatusCode())).param("expectedTextResponse", mockRequest.getExpectedTextResponse()).param("description", mockRequest.getDescription())).andExpect(status().isBadRequest()).andExpect(content().contentType(expectedContentType)).andReturn();
    // Assert
    assertEquals(expectedResponseBody, result.getResponse().getContentAsString());
}
Also used : MockMultipartFile(org.springframework.mock.web.MockMultipartFile) ProcessedMockRequest(com.arbindo.mimock.manage.mimocks.models.request.ProcessedMockRequest) ProcessedMockRequest(com.arbindo.mimock.manage.mimocks.models.request.ProcessedMockRequest) MockRequest(com.arbindo.mimock.manage.mimocks.models.request.MockRequest) JsonMapper.convertObjectToJsonString(com.arbindo.mimock.helpers.general.JsonMapper.convertObjectToJsonString) RandomDataGenerator.generateRandomAlphabeticString(com.arbindo.mimock.helpers.general.RandomDataGenerator.generateRandomAlphabeticString) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) MvcResult(org.springframework.test.web.servlet.MvcResult) Mock(com.arbindo.mimock.entities.Mock) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) WebMvcTest(org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest)

Aggregations

MockRequest (com.arbindo.mimock.manage.mimocks.models.request.MockRequest)11 ProcessedMockRequest (com.arbindo.mimock.manage.mimocks.models.request.ProcessedMockRequest)11 Test (org.junit.jupiter.api.Test)10 Mock (com.arbindo.mimock.entities.Mock)9 JsonMapper.convertObjectToJsonString (com.arbindo.mimock.helpers.general.JsonMapper.convertObjectToJsonString)9 RandomDataGenerator.generateRandomAlphabeticString (com.arbindo.mimock.helpers.general.RandomDataGenerator.generateRandomAlphabeticString)9 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)9 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)9 WebMvcTest (org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest)9 MockMultipartFile (org.springframework.mock.web.MockMultipartFile)9 MvcResult (org.springframework.test.web.servlet.MvcResult)9 MockMultipartHttpServletRequestBuilder (org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder)7 Messages (com.arbindo.mimock.common.constants.Messages)5 UrlConfig (com.arbindo.mimock.common.constants.UrlConfig)5 GenericResponseWrapper (com.arbindo.mimock.common.wrapper.GenericResponseWrapper)5 MocksGenerator (com.arbindo.mimock.helpers.entities.MocksGenerator)5 DefaultHttpInterceptor (com.arbindo.mimock.interceptor.DefaultHttpInterceptor)5 Status (com.arbindo.mimock.manage.mimocks.enums.Status)5 MockManagementService (com.arbindo.mimock.manage.mimocks.service.MockManagementService)5 JwtRequestFilter (com.arbindo.mimock.security.JwtRequestFilter)5