package br.gov.servicos.config; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.Status; import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.query.SearchQuery; import static br.gov.servicos.config.PortalDeServicosIndex.PORTAL_DE_SERVICOS_INDEX; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import static org.mockito.BDDMockito.given; import static org.mockito.Matchers.any; @RunWith(MockitoJUnitRunner.class) public class PortalDeServicosIndexHealthIndicatorTest { @Mock ElasticsearchTemplate es; PortalDeServicosIndexHealthIndicator indicator; @Before public void setUp() throws Exception { indicator = new PortalDeServicosIndexHealthIndicator(es); } @Test public void retornaUpParaAmbosIndicesCriados() throws Exception { given(es.count(any(SearchQuery.class))).willReturn(42L); given(es.indexExists(PORTAL_DE_SERVICOS_INDEX)).willReturn(true); Health health = indicator.health(); assertThat(health.getStatus(), is(Status.UP)); assertThat(health.getDetails().get(PORTAL_DE_SERVICOS_INDEX), is("ok (42 docs)")); } @Test public void retornaDownParaAmbosIndicesNaoCriados() throws Exception { given(es.indexExists(PORTAL_DE_SERVICOS_INDEX)).willReturn(false); Health health = indicator.health(); assertThat(health.getStatus(), is(Status.DOWN)); assertThat(health.getDetails().get(PORTAL_DE_SERVICOS_INDEX), is("missing")); } @Test public void retornaDownParaExcecoes() throws Exception { given(es.indexExists(PORTAL_DE_SERVICOS_INDEX)).willThrow(new RuntimeException("boom")); Health health = indicator.health(); assertThat(health.getStatus(), is(Status.DOWN)); assertThat(health.getDetails().get(PORTAL_DE_SERVICOS_INDEX), is("exception")); assertThat(health.getDetails().get("error"), is("java.lang.RuntimeException: boom")); } }