94 lines
2.9 KiB
Python
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)
|