package br.gov.servicos.editor.conteudo.cartas;
import br.gov.servicos.editor.conteudo.ConteudoVersionado;
import br.gov.servicos.editor.conteudo.ConteudoVersionadoFactory;
import br.gov.servicos.editor.conteudo.TipoPagina;
import br.gov.servicos.editor.git.Metadados;
import br.gov.servicos.editor.security.TipoPermissao;
import br.gov.servicos.editor.security.UserProfiles;
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.security.access.AccessDeniedException;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.verify;
@RunWith(MockitoJUnitRunner.class)
public class PublicarPaginaControllerTest {
@Mock
ConteudoVersionado carta;
@Mock
ConteudoVersionadoFactory factory;
PublicarPaginaController controller;
@Mock
UserProfiles userProfiles;
@Before
public void setUp() throws Exception {
controller = new PublicarPaginaController(factory, userProfiles);
given(carta.getMetadados())
.willReturn(new Metadados());
given(carta.existe())
.willReturn(true);
given(factory.pagina(anyString(), any()))
.willReturn(carta);
}
@Test
public void publicaCartaExistente() throws Exception {
given(userProfiles.temPermissaoParaTipoPagina(eq(TipoPermissao.PUBLICAR), any(TipoPagina.class))).willReturn(true);
controller.publicar("servico", "");
verify(carta).publicar(userProfiles.get());
}
@Test(expected = AccessDeniedException.class)
public void retornarAcessoNegadoCasoUsuarioNaoTenhaAcesso() throws ConteudoInexistenteException {
given(userProfiles.temPermissaoParaTipoPagina(eq(TipoPermissao.PUBLICAR), any(TipoPagina.class))).willReturn(false);
given(userProfiles.temPermissaoParaTipoPaginaOrgaoEspecifico(eq(TipoPermissao.PUBLICAR), any(TipoPagina.class), anyString())).willReturn(false);
controller.publicar("servico", "");
}
}