sgmp/solicitacoes/tests/test_acesso_gerenciar_permi...

94 lines
2.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, 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)