package br.gov.servicos.editor.usuarios;
import br.gov.servicos.editor.usuarios.cadastro.CamposServidor;
import br.gov.servicos.editor.usuarios.cadastro.FormularioUsuario;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.security.crypto.password.PasswordEncoder;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
@RunWith(MockitoJUnitRunner.class)
public class UsuarioFactoryTest {
private static final String CPF = "12312312318";
private static final Long PAPEL_ID = 1L;
private static final String SIORG = "1234";
private static final String SIAPE = "43214321";
private static final String EMAIL_PRIMARIO = "email@institucional.gov.br";
private static final String EMAIL_SECUNDARIO = "email@secundario.org";
private static final boolean SERVIDOR = true;
private static final String NOME = "Nome completo";
@Mock
private PasswordEncoder passwordEncoder;
@InjectMocks
private UsuarioFactory factory;
private FormularioUsuario formularioUsuario;
@Before
public void setUp() {
formularioUsuario = new FormularioUsuario().
withCpf(CPF).
withPapelId(PAPEL_ID.toString()).
withSiorg(SIORG).
withCamposServidor(new CamposServidor().withServidor(SERVIDOR).withSiape(SIAPE)).
withEmailPrimario(EMAIL_PRIMARIO).
withEmailSecundario(EMAIL_SECUNDARIO).
withNome(NOME);
}
@Test
public void criaUsuarioComCamposBasicos() {
Usuario usuario = factory.criarUsuario(formularioUsuario);
assertThat(usuario.getCpf(), equalTo(CPF));
assertThat(usuario.getSiorg(), equalTo(SIORG));
assertThat(usuario.getEmailPrimario(), equalTo(EMAIL_PRIMARIO));
assertThat(usuario.getEmailSecundario(), equalTo(EMAIL_SECUNDARIO));
assertThat(usuario.getSiape(), equalTo(SIAPE));
assertThat(usuario.isServidor(), equalTo(SERVIDOR));
assertThat(usuario.getNome(), equalTo(NOME));
}
@Test
public void criaUsuarioComPapel() {
Usuario usuario = factory.criarUsuario(formularioUsuario);
assertThat(usuario.getPapel().getId(), equalTo(PAPEL_ID));
}
@Test
public void criaUsuarioComAlgunsValoresPadrão() {
Usuario usuario = factory.criarUsuario(formularioUsuario);
assertThat(usuario.isHabilitado(), is(true));
}
@Test
public void criaUsuarioComSiapeNullSeValorForVazio() {
CamposServidor camposSerividorSemSiape = formularioUsuario.getCamposServidor().withSiape("");
Usuario usuario = factory.criarUsuario(formularioUsuario.withCamposServidor(camposSerividorSemSiape));
assertNull(usuario.getSiape());
}
@Test
public void desformataCpf() {
String cpfFormatado = "123.123.123-12";
Usuario usuario = factory.criarUsuario(formularioUsuario.withCpf(cpfFormatado));
assertThat(usuario.getCpf(), equalTo("12312312312"));
}
}