package br.gov.servicos.editor.security;
import br.gov.servicos.editor.usuarios.FormularioAcessoCidadao;
import lombok.experimental.FieldDefaults;
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.validation.BindingResult;
import org.springframework.web.servlet.ModelAndView;
import static lombok.AccessLevel.PRIVATE;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.when;
@FieldDefaults(level = PRIVATE)
@RunWith(MockitoJUnitRunner.class)
public class AcessoCidadaoControllerTest {
AcessoCidadaoController controller;
@Mock
AcessoCidadaoService service;
@Mock
BindingResult result;
@Before
public void setUp() {
controller = new AcessoCidadaoController(service);
}
@Test
public void deveRedirecionarParaAcessoCidadao() {
assertThat(controller.acessoCidadao().getViewName(), is("acesso-cidadao"));
}
@Test
public void deveRedirecionarParaPaginaPrincipal() {
FormularioAcessoCidadao cidadao = criaCidadao();
when(result.hasErrors()).thenReturn(false);
doNothing().when(service).autenticaCidadao(eq(cidadao));
ModelAndView view = controller.acessoCidadao(cidadao, result);
assertThat(view.getViewName(), is("redirect:/editar"));
}
@Test
public void naoDeveRedirecionarParaPaginaPrincipalPoisExisteErroDeValidacao() {
FormularioAcessoCidadao cidadao = criaCidadao();
when(result.hasErrors()).thenReturn(true);
doNothing().when(service).autenticaCidadao(eq(cidadao));
ModelAndView view = controller.acessoCidadao(cidadao, result);
assertThat(view.getViewName(), is("acesso-cidadao"));
}
private FormularioAcessoCidadao criaCidadao() {
return new FormularioAcessoCidadao("Nome", "um@email.com", "123.123.123-12");
}
}