package br.gov.servicos.editor.usuarios; import br.gov.servicos.editor.security.GerenciadorPermissoes; import br.gov.servicos.editor.security.Permissao; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static br.gov.servicos.editor.security.TipoPermissao.DESPUBLICAR; import static br.gov.servicos.editor.security.TipoPermissao.PUBLICAR; import static com.google.common.collect.Lists.newArrayList; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class UsuarioTest { private static final String NOME_PAPEL = "EDITOR"; private static final Permissao PERMISSAO_PUBLICAR = new Permissao(PUBLICAR.getNome()); private static final Permissao PERMISSAO_DESPUBLICAR_ORGAO_ESPECIFICO = new Permissao(DESPUBLICAR.comOrgaoEspecifico()); private static final String ORGAO_ID = "orgaoId"; private static final String OUTRO_ORGAO_ID = "outroOrgaoId"; @Mock private GerenciadorPermissoes gerenciadorPermissoes; private Usuario usuario; @Before public void setUp() { Usuario.setGerenciadorPermissoes(gerenciadorPermissoes); Papel papel = new Papel(); papel.setNome(NOME_PAPEL); usuario = new Usuario().withPapel(papel).withSiorg(ORGAO_ID); when(gerenciadorPermissoes.getPermissoes(NOME_PAPEL)).thenReturn( newArrayList(PERMISSAO_PUBLICAR, PERMISSAO_DESPUBLICAR_ORGAO_ESPECIFICO)); } @Test public void deveVerificarSeUsuarioPossuiPermissaoComOrgao() { assertTrue(usuario.temPermissaoComOrgao(DESPUBLICAR, ORGAO_ID)); assertFalse(usuario.temPermissaoComOrgao(DESPUBLICAR, OUTRO_ORGAO_ID)); } @Test public void deveVerificarSeUsuarioPossuiPermissao() { assertTrue(usuario.temPermissao(PUBLICAR.getNome())); assertFalse(usuario.temPermissao(DESPUBLICAR.getNome())); } }