package me.moodcat.core.mappers;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.UUID;
import javax.ws.rs.NotAuthorizedException;
import javax.ws.rs.core.Response.Status;
import org.junit.Test;
import org.mockito.Mockito;
import com.google.inject.ProvisionException;
public class GuiceProvisionExceptionMapperTest extends
ExceptionMapperTest<ProvisionException> {
private static final NotAuthorizedExceptionMapper NOT_AUTHORIZED_MAPPER = mock(NotAuthorizedExceptionMapper.class);
private static final Exception GENERAL_EXCEPTION = mock(Exception.class);
private static final NotAuthorizedException NOT_AUTHORIZED_EXCEPTION = mock(NotAuthorizedException.class);
public GuiceProvisionExceptionMapperTest() {
super(new GuiceProvisionExceptionMapper(NOT_AUTHORIZED_MAPPER));
}
@Override
protected Status getResponseStatus() {
return Status.INTERNAL_SERVER_ERROR;
}
@Test
public void usesNotAuthorizedMapperWhenCauseIsNotAuthorized() {
when(this.exception.getCause()).thenReturn(NOT_AUTHORIZED_EXCEPTION);
UUID randomUuid = UUID.randomUUID();
this.mapper.createResponse(this.exception, randomUuid);
Mockito.verify(NOT_AUTHORIZED_MAPPER).createResponse(eq(NOT_AUTHORIZED_EXCEPTION),
eq(randomUuid));
}
@Test
public void usesNotAuthorizedMapperWhenCascadedCauseIsNotAuthorized() {
when(this.exception.getCause()).thenReturn(GENERAL_EXCEPTION);
when(GENERAL_EXCEPTION.getCause()).thenReturn(NOT_AUTHORIZED_EXCEPTION);
UUID randomUuid = UUID.randomUUID();
this.mapper.createResponse(this.exception, randomUuid);
verify(NOT_AUTHORIZED_MAPPER).createResponse(eq(NOT_AUTHORIZED_EXCEPTION), eq(randomUuid));
}
}