blob: 4c9868f7edbabe5487187a47d4bf6bc3c8a20995 [file]
from django.contrib.auth.models import User
from django.test import TestCase
from dauthz.core import enforcer
class TestConfig(TestCase):
def __init__(self, methodName: str = ...):
super().__init__(methodName)
self.UserModel = User
def create_users(self):
self.user = User.objects.create_user(
username="alice",
email="test@example.com",
password="test",
)
def setUp(self):
self.create_users()
self.e = enforcer
def test_get_user_permissions(self):
self.e.clear_policy()
user = self.UserModel._default_manager.get(pk=self.user.pk)
self.assertEqual(user.get_user_permissions(), set())
self.e.add_policy("alice", "data1", "read")
self.e.add_policy("alice", "data1", "write")
self.assertEqual(user.get_user_permissions(), {("alice", "data1", "read"), ("alice", "data1", "write")})
def test_get_all_permissions(self):
self.e.clear_policy()
user = self.UserModel._default_manager.get(pk=self.user.pk)
self.assertEqual(user.get_all_permissions(), set())
user = self.UserModel._default_manager.get(pk=self.user.pk)
self.e.add_policy("alice", "data1", "read")
self.e.add_policy("alice", "data1", "write")
self.assertEqual(user.get_all_permissions(), {("alice", "data1", "read"), ("alice", "data1", "write")})
user = self.UserModel._default_manager.get(pk=self.user.pk) # to reset cache
self.e.add_policy("data2_admin", "data2", "read")
self.e.add_policy("data2_admin", "data2", "write")
self.e.add_role_for_user("alice", "data2_admin")
self.assertEqual(
user.get_all_permissions(),
{
("alice", "data1", "read"),
("alice", "data1", "write"),
("data2_admin", "data2", "write"),
("data2_admin", "data2", "read"),
},
)
def test_has_perm(self):
self.e.clear_policy()
user = self.UserModel._default_manager.get(pk=self.user.pk) # to reset cache
self.assertFalse(user.has_perm(("alice", "data1", "read")))
user = self.UserModel._default_manager.get(pk=self.user.pk)
self.e.add_policy("alice", "data1", "read")
self.assertTrue(user.has_perm(("alice", "data1", "read")))