Skip to content
Snippets Groups Projects
Commit a7ff9a07 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-4717 Added Test for ValidationException

parent 0d435693
No related branches found
No related tags found
No related merge requests found
package de.ozgcloud.admin.common.errorhandling; package de.ozgcloud.admin.common.errorhandling;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*; import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import java.util.stream.Stream; import java.util.stream.Stream;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.MethodSource;
...@@ -15,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -15,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.security.test.context.support.WithMockUser; import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.ResultActions;
...@@ -69,4 +73,16 @@ public class AdminExceptionHandlerITCase { ...@@ -69,4 +73,16 @@ public class AdminExceptionHandlerITCase {
} }
} }
@Nested
class TestConstraintViolationException {
@Test
@SneakyThrows
void shouldHaveInfoInBody() {
var result = mockMvc
.perform(post("/api/test-error").content("{ \"string\" : \"\" }").contentType(MediaType.APPLICATION_JSON).with(csrf()));
assertThat(result.andReturn().getResponse().getContentAsString()).contains("validatedClass.string");
}
}
} }
...@@ -80,7 +80,7 @@ class AdminExceptionHandlerTest { ...@@ -80,7 +80,7 @@ class AdminExceptionHandlerTest {
@SneakyThrows @SneakyThrows
private ResultActions doPerformWithError(Class<? extends Exception> exceptionClass) { private ResultActions doPerformWithError(Class<? extends Exception> exceptionClass) {
return mockMvc.perform(get("/test-error").param("errorClassName", exceptionClass.getName())); return mockMvc.perform(get("/api/test-error").param("errorClassName", exceptionClass.getName()));
} }
} }
......
package de.ozgcloud.admin.common.errorhandling;
import jakarta.validation.Valid;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@Service
@Validated
class HelperService {
ValidatedClass returnValidObject(@Valid ValidatedClass validatedClass) {
return validatedClass;
}
}
...@@ -26,9 +26,12 @@ import java.util.Map; ...@@ -26,9 +26,12 @@ import java.util.Map;
import jakarta.validation.ConstraintViolationException; import jakarta.validation.ConstraintViolationException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.rest.webmvc.ResourceNotFoundException; import org.springframework.data.rest.webmvc.ResourceNotFoundException;
import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.AccessDeniedException;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -37,9 +40,11 @@ import de.ozgcloud.common.errorhandling.TechnicalException; ...@@ -37,9 +40,11 @@ import de.ozgcloud.common.errorhandling.TechnicalException;
import io.micrometer.common.lang.NonNullApi; import io.micrometer.common.lang.NonNullApi;
@RestController @RestController
@RequestMapping("/test-error") @RequestMapping("/api/test-error")
@NonNullApi @NonNullApi
class TestErrorController { class TestErrorController {
@Autowired
private HelperService service;
@FunctionalInterface @FunctionalInterface
interface ExceptionProducer { interface ExceptionProducer {
...@@ -61,4 +66,10 @@ class TestErrorController { ...@@ -61,4 +66,10 @@ class TestErrorController {
throw EXCEPTION_PRODUCER.get( throw EXCEPTION_PRODUCER.get(
Class.forName(errorClassName)).produceException(); Class.forName(errorClassName)).produceException();
} }
@PostMapping
public ValidatedClass postMethodName(@RequestBody ValidatedClass object) {
return service.returnValidObject(object);
}
} }
package de.ozgcloud.admin.common.errorhandling;
import jakarta.validation.constraints.NotEmpty;
import lombok.Builder;
import lombok.Getter;
import lombok.extern.jackson.Jacksonized;
@Getter
@Builder
@Jacksonized
public class ValidatedClass {
@NotEmpty(message = "Empty field")
private String string;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment