[BAEL-4084] Code Upload
This commit is contained in:
parent
dbb4a85c10
commit
cb26154fe0
@ -141,6 +141,10 @@
|
|||||||
<groupId>com.h2database</groupId>
|
<groupId>com.h2database</groupId>
|
||||||
<artifactId>h2</artifactId>
|
<artifactId>h2</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.bytebuddy</groupId>
|
||||||
|
<artifactId>byte-buddy</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- web -->
|
<!-- web -->
|
||||||
|
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.baeldung.exceptiontesting;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
|
||||||
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main Application Class - uses Spring Boot. Just run this as a normal Java
|
||||||
|
* class to run up a Jetty Server (on http://localhost:8082/spring-rest-full)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@EnableScheduling
|
||||||
|
@EnableAutoConfiguration
|
||||||
|
@ComponentScan("com.baeldung.exceptiontesting")
|
||||||
|
@SpringBootApplication
|
||||||
|
public class ExceptionTestingApplication extends SpringBootServletInitializer {
|
||||||
|
|
||||||
|
public static void main(final String[] args) {
|
||||||
|
SpringApplication.run(ExceptionTestingApplication.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.baeldung.exceptiontesting.controller;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import com.baeldung.exceptiontesting.exception.BadArgumentsException;
|
||||||
|
import com.baeldung.exceptiontesting.exception.InternalException;
|
||||||
|
import com.baeldung.exceptiontesting.exception.ResourceNotFoundException;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
public class ExceptionController {
|
||||||
|
|
||||||
|
@GetMapping("/exception/{exception_id}")
|
||||||
|
public void getSpecificException(@PathVariable("exception_id") String pException) {
|
||||||
|
if("not_found".equals(pException)) {
|
||||||
|
throw new ResourceNotFoundException("resource not found");
|
||||||
|
}
|
||||||
|
else if("bad_arguments".equals(pException)) {
|
||||||
|
throw new BadArgumentsException("bad arguments");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw new InternalException("internal error");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/exception/throw")
|
||||||
|
public void getException() throws Exception {
|
||||||
|
throw new Exception("error");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.baeldung.exceptiontesting.exception;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||||
|
public class BadArgumentsException extends RuntimeException {
|
||||||
|
|
||||||
|
public BadArgumentsException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.baeldung.exceptiontesting.exception;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||||
|
public class InternalException extends RuntimeException {
|
||||||
|
|
||||||
|
public InternalException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.baeldung.exceptiontesting.exception;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
@ResponseStatus(HttpStatus.NOT_FOUND)
|
||||||
|
public class ResourceNotFoundException extends RuntimeException {
|
||||||
|
|
||||||
|
public ResourceNotFoundException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
package com.baeldung.exceptiontesting.controller;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
|
||||||
|
import com.baeldung.exceptiontesting.controller.ExceptionController;
|
||||||
|
import com.baeldung.exceptiontesting.exception.BadArgumentsException;
|
||||||
|
import com.baeldung.exceptiontesting.exception.InternalException;
|
||||||
|
import com.baeldung.exceptiontesting.exception.ResourceNotFoundException;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
//@SpringBootTest(classes = Application.class)
|
||||||
|
@WebMvcTest(ExceptionController.class)
|
||||||
|
public class ExceptionControllerUnitTest{
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MockMvc mvc;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenNotFound_whenGetSpecificException_thenNotFoundCode() throws Exception {
|
||||||
|
String exceptionParam = "not_found";
|
||||||
|
|
||||||
|
mvc.perform(get("/exception/{exception_id}", exceptionParam)
|
||||||
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
|
.andExpect(status().isNotFound())
|
||||||
|
.andExpect(result -> assertTrue(result.getResolvedException() instanceof ResourceNotFoundException))
|
||||||
|
.andExpect(result -> assertEquals("resource not found", result.getResolvedException().getMessage()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenBadArguments_whenGetSpecificException_thenBadRequest() throws Exception {
|
||||||
|
String exceptionParam = "bad_arguments";
|
||||||
|
|
||||||
|
mvc.perform(get("/exception/{exception_id}", exceptionParam)
|
||||||
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
|
.andExpect(status().isBadRequest())
|
||||||
|
.andExpect(result -> assertTrue(result.getResolvedException() instanceof BadArgumentsException))
|
||||||
|
.andExpect(result -> assertEquals("bad arguments", result.getResolvedException().getMessage()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenOther_whenGetSpecificException_thenInternalServerError() throws Exception {
|
||||||
|
String exceptionParam = "dummy";
|
||||||
|
|
||||||
|
mvc.perform(get("/exception/{exception_id}", exceptionParam)
|
||||||
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
|
.andExpect(status().isInternalServerError())
|
||||||
|
.andExpect(result -> assertTrue(result.getResolvedException() instanceof InternalException))
|
||||||
|
.andExpect(result -> assertEquals("internal error", result.getResolvedException().getMessage()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = Exception.class)
|
||||||
|
public void whenGetException_thenInternalServerError() throws Exception {
|
||||||
|
mvc.perform(get("/exception/throw")
|
||||||
|
.contentType(MediaType.APPLICATION_JSON));
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user