sgmp/solicitacoes/tests/test_acesso_gerenciar_permi...

120 lines
3.9 KiB
Python

from django.contrib.auth import get_user_model
from django.test import Client, TestCase
from django.urls import reverse
from ..acesso import usuario_pode_gerenciar_permissoes
from ..models import ConfiguracaoSGMP, UsuarioPerfilExtra, UsuarioSistema
User = get_user_model()
class UsuarioPodeGerenciarPermissoesLogicTests(TestCase):
def setUp(self):
self.cfg = ConfiguracaoSGMP.load()
self.cfg.perfis_gerenciar_permissoes = [UsuarioSistema.Perfil.ADMIN]
self.cfg.save()
def test_gestor_negado_quando_so_admin(self):
u = UsuarioSistema(
matricula="1",
nome="Gestor",
perfil=UsuarioSistema.Perfil.GESTOR,
ativo=True,
)
self.assertFalse(usuario_pode_gerenciar_permissoes(u))
def test_admin_permitido(self):
u = UsuarioSistema(
matricula="2",
nome="Admin",
perfil=UsuarioSistema.Perfil.ADMIN,
ativo=True,
)
self.assertTrue(usuario_pode_gerenciar_permissoes(u))
def test_gg_permitido_quando_config_inclui_gg(self):
self.cfg.perfis_gerenciar_permissoes = [
UsuarioSistema.Perfil.ADMIN,
UsuarioSistema.Perfil.GG,
]
self.cfg.save()
u = UsuarioSistema(
matricula="3",
nome="GG",
perfil=UsuarioSistema.Perfil.GG,
ativo=True,
)
self.assertTrue(usuario_pode_gerenciar_permissoes(u))
def test_inativo_negado(self):
u = UsuarioSistema(
matricula="4",
nome="Admin off",
perfil=UsuarioSistema.Perfil.ADMIN,
ativo=False,
)
self.assertFalse(usuario_pode_gerenciar_permissoes(u))
class GerenciarPermissoesViewTests(TestCase):
def setUp(self):
ConfiguracaoSGMP.objects.all().delete()
self.cfg = ConfiguracaoSGMP.load()
self.cfg.perfis_gerenciar_permissoes = [UsuarioSistema.Perfil.ADMIN]
self.cfg.save()
User.objects.create_user(username="10", password="secret")
UsuarioSistema.objects.create(
matricula="10",
nome="Gestor",
perfil=UsuarioSistema.Perfil.GESTOR,
ativo=True,
)
User.objects.create_user(username="20", password="secret")
UsuarioSistema.objects.create(
matricula="20",
nome="Admin",
perfil=UsuarioSistema.Perfil.ADMIN,
ativo=True,
)
self.url = reverse("solicitacoes:gerenciar_permissoes")
self.client = Client()
def test_gestor_redireciona_dashboard(self):
self.client.login(username="10", password="secret")
r = self.client.get(self.url)
self.assertEqual(r.status_code, 302)
self.assertEqual(r["Location"], reverse("solicitacoes:dashboard"))
def test_admin_ok(self):
self.client.login(username="20", password="secret")
r = self.client.get(self.url)
self.assertEqual(r.status_code, 200)
class TodasSolicitacoesPerfilCombinadoTests(TestCase):
def setUp(self):
self.client = Client()
self.url = reverse("solicitacoes:todas_solicitacoes")
User.objects.create_user(username="30", password="secret")
self.usuario = UsuarioSistema.objects.create(
matricula="30",
nome="GG com perfil Gestor",
perfil=UsuarioSistema.Perfil.GG,
ativo=True,
)
UsuarioPerfilExtra.objects.create(
usuario=self.usuario,
perfil=UsuarioSistema.Perfil.GESTOR,
)
def test_usuario_com_gg_e_gestor_acessa_todas_solicitacoes(self):
self.client.login(username="30", password="secret")
r = self.client.get(self.url)
self.assertEqual(r.status_code, 200)
def test_eh_apenas_gestor_false_quando_ha_perfil_operacional(self):
self.assertFalse(self.usuario.eh_apenas_gestor())