package org.stagemonitor.alerting.alerter;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.Arrays;
import java.util.HashMap;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.stagemonitor.alerting.AlertingPlugin;
import org.stagemonitor.alerting.ThresholdMonitoringReporterTest;
import org.stagemonitor.alerting.check.CheckResult;
import org.stagemonitor.alerting.incident.ConcurrentMapIncidentRepository;
import org.stagemonitor.alerting.incident.Incident;
import org.stagemonitor.core.MeasurementSession;
import org.stagemonitor.core.util.JsonUtils;

public class IncidentServletTest {

	private IncidentServlet incidentServlet;
	private Incident incident;

	@Before
	public void setUp() throws Exception {
		AlertingPlugin alertingPlugin = mock(AlertingPlugin.class);
		ConcurrentMapIncidentRepository incidentRepository = new ConcurrentMapIncidentRepository();
		incident = new Incident(ThresholdMonitoringReporterTest.createCheckCheckingMean(1, 5),
				new MeasurementSession("testApp", "testHost2", "testInstance"),
				Arrays.asList(new CheckResult("test", 10, CheckResult.Status.CRITICAL),
						new CheckResult("test", 10, CheckResult.Status.ERROR)));
		incidentRepository.createIncident(incident);
		when(alertingPlugin.getIncidentRepository()).thenReturn(incidentRepository);
		incidentServlet = new IncidentServlet(alertingPlugin);
	}

	@Test
	public void testGetIncidents() throws Exception {
		MockHttpServletResponse response = new MockHttpServletResponse();
		incidentServlet.service(new MockHttpServletRequest("GET", "/stagemonitor/incidents"), response);
		String expected = JsonUtils.toJson(new HashMap<String, Object>() {{
			put("status", CheckResult.Status.CRITICAL);
			put("incidents", Arrays.asList(incident));
		}});
		Assert.assertEquals(expected, response.getContentAsString());
	}
}

package org.stagemonitor.alerting.alerter;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.Arrays;
import java.util.HashMap;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.stagemonitor.alerting.AlertingPlugin;
import org.stagemonitor.alerting.ThresholdMonitoringReporterTest;
import org.stagemonitor.alerting.check.CheckResult;
import org.stagemonitor.alerting.incident.ConcurrentMapIncidentRepository;
import org.stagemonitor.alerting.incident.Incident;
import org.stagemonitor.core.MeasurementSession;
import org.stagemonitor.core.util.JsonUtils;

public class IncidentServletTest {

	private IncidentServlet incidentServlet;
	private Incident incident;
	private AlertingPlugin alertingPlugin;

	@Before
	public void setUp() throws Exception {
		alertingPlugin = mock(AlertingPlugin.class);
		ConcurrentMapIncidentRepository incidentRepository = new ConcurrentMapIncidentRepository();
		incident = new Incident(ThresholdMonitoringReporterTest.createCheckCheckingMean(1, 5),
				new MeasurementSession("testApp", "testHost2", "testInstance"),
				Arrays.asList(new CheckResult("test", 10, CheckResult.Status.CRITICAL),
						new CheckResult("test", 10, CheckResult.Status.ERROR)));
		incidentRepository.createIncident(incident);
		when(alertingPlugin.getIncidentRepository()).thenReturn(incidentRepository);
		incidentServlet = new IncidentServlet(alertingPlugin);
	}

	@Test
	public void testGetIncidents() throws Exception {
		MockHttpServletResponse response = new MockHttpServletResponse();
		incidentServlet.service(new MockHttpServletRequest("GET", "/stagemonitor/incidents"), response);
		String expected = JsonUtils.toJson(new HashMap<String, Object>() {{
			put("status", CheckResult.Status.CRITICAL);
			put("incidents", Arrays.asList(incident));
		}});
		Assert.assertEquals(expected, response.getContentAsString());
	}

	@Test
	public void testGetIncidentsIncidentRepositoryNull() throws Exception {
		when(alertingPlugin.getIncidentRepository()).thenReturn(null);

		MockHttpServletResponse response = new MockHttpServletResponse();
		incidentServlet.service(new MockHttpServletRequest("GET", "/stagemonitor/incidents"), response);
		Assert.assertEquals("{}", response.getContentAsString());
	}
}

Add another test for IncidentServlet