package com.aol.micro.server.general.exception.mapper; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import java.io.EOFException; import javax.ws.rs.NotFoundException; import javax.ws.rs.NotSupportedException; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import app.custom.com.aol.micro.server.copy.MyException; import com.fasterxml.jackson.core.JsonProcessingException; public class GeneralExceptionMapperTest { GeneralExceptionMapper mapper; Logger mockLogger; @Before public void setUp() throws Exception { mapper = new GeneralExceptionMapper(); mockLogger = mock(Logger.class); } @Test public void whenEOFException_thenBadRequest() { assertThat(mapper.toResponse(new EOFException("test")).getStatus(), is(Status.BAD_REQUEST.getStatusCode())); } @Test public void whenJsonProcessingException_thenBadRequest() { assertThat(mapper.toResponse(mock(JsonProcessingException.class)).getStatus(), is(Status.BAD_REQUEST.getStatusCode())); } @Test public void whenNotFoundException_thenNotFound() { assertThat(mapper.toResponse(new NotFoundException()).getStatus(), is(Status.NOT_FOUND.getStatusCode())); } @Test public void whenWebApplicationException_thenUnsupportedMediaType() { assertThat(mapper.toResponse(new NotSupportedException(Response.status(Status.UNSUPPORTED_MEDIA_TYPE).build())) .getStatus(), is(Status.UNSUPPORTED_MEDIA_TYPE.getStatusCode())); } @Test public void whenRuntimeException_thenInternalServerError() { assertThat(mapper.toResponse(mock(RuntimeException.class)).getStatus(), is(Status.INTERNAL_SERVER_ERROR.getStatusCode())); } @Test public void whenJacksonException_thenNotInternalServerError_NoErrorsLogged() { mapper= new GeneralExceptionMapper(mockLogger); assertThat(mapper.toResponse(new MyLocalException()).getStatus(), is((Status.INTERNAL_SERVER_ERROR.getStatusCode()))); verify(mockLogger, times(0)).error(any(String.class), any(Object[].class)); verify(mockLogger, times(0)).error(any(String.class), any(Throwable.class), any(Object[].class)); } }