package io.prometheus.client.exporter;
import static org.mockito.Matchers.anyChar;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.junit.Test;
public class MetricsServletTest {
@Test
public void testWriterIsClosedNormally() throws IOException, ServletException {
HttpServletRequest req = mock(HttpServletRequest.class);
HttpServletResponse resp = mock(HttpServletResponse.class);
PrintWriter writer = mock(PrintWriter.class);
when(resp.getWriter()).thenReturn(writer);
new MetricsServlet().doGet(req, resp);
verify(writer).close();
}
@Test
public void testWriterIsClosedOnException() throws IOException, ServletException {
HttpServletRequest req = mock(HttpServletRequest.class);
HttpServletResponse resp = mock(HttpServletResponse.class);
PrintWriter writer = mock(PrintWriter.class);
when(resp.getWriter()).thenReturn(writer);
doThrow(new RuntimeException()).when(writer).write(anyChar());
new MetricsServlet().doGet(req, resp);
verify(writer).close();
}
}