//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.core.web.servlets;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.doReturn;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.slf4j.Marker;
import uk.gov.dstl.baleen.core.logging.BaleenLogging;
import uk.gov.dstl.baleen.testing.servlets.ServletCaller;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.IThrowableProxy;
import ch.qos.logback.classic.spi.LoggerContextVO;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* Tests for {@link LoggingServlet}.
*
*
*
*/
@RunWith(MockitoJUnitRunner.Silent.class)
public class LoggingServletTest {
@Mock
BaleenLogging logging;
List<ILoggingEvent> events = new ArrayList<ILoggingEvent>();
@Before
public void setUp() {
doReturn(events).when(logging).getRecentLogs();
}
@Test
public void testGet() throws Exception {
ServletCaller caller = new ServletCaller();
ILoggingEvent e = createEvent("test");
events.add(e);
caller.doGet(new LoggingServlet(logging));
ObjectMapper mapper = new ObjectMapper();
@SuppressWarnings("rawtypes")
List list = mapper.readValue(caller.getResponseBody(), List.class);
assertEquals(1, list.size());
}
private ILoggingEvent createEvent(String message) {
return new ILoggingEvent() {
@Override
public void prepareForDeferredProcessing() {
// Do nothing
}
@Override
public boolean hasCallerData() {
return false;
}
@Override
public long getTimeStamp() {
return 0;
}
@Override
public IThrowableProxy getThrowableProxy() {
return null;
}
@Override
public String getThreadName() {
return "test";
}
@Override
public String getMessage() {
return message;
}
@Override
public Map<String, String> getMdc() {
return Collections.emptyMap();
}
@Override
public Marker getMarker() {
return null;
}
@Override
public Map<String, String> getMDCPropertyMap() {
return Collections.emptyMap();
}
@Override
public String getLoggerName() {
return "fake";
}
@Override
public LoggerContextVO getLoggerContextVO() {
return null;
}
@Override
public Level getLevel() {
return Level.INFO;
}
@Override
public String getFormattedMessage() {
return message;
}
@Override
public StackTraceElement[] getCallerData() {
return new StackTraceElement[0];
}
@Override
public Object[] getArgumentArray() {
return new Object[0];
}
};
}
}