[BAEL-4084] Code Upload
This commit is contained in:
parent
dbb4a85c10
commit
cb26154fe0
@ -141,6 +141,10 @@
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.bytebuddy</groupId>
|
||||
<artifactId>byte-buddy</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 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