vbv/server/vbv_lernwelt/iam/tests/test_permissions.py

177 lines
5.1 KiB
Python

from django.test import TestCase
from vbv_lernwelt.course.creators.test_utils import (
create_course,
create_course_session,
create_user,
)
from vbv_lernwelt.course.models import CourseSessionUser
from vbv_lernwelt.course_session_group.models import CourseSessionGroup
from vbv_lernwelt.iam.permissions import has_course_session_document_access
from vbv_lernwelt.learning_mentor.models import (
AgentParticipantRelation,
AgentParticipantRoleType,
)
class PermissionsTestCase(TestCase):
def setUp(self):
self.course, _ = create_course("Test Course")
self.course_session = create_course_session(
course=self.course, title="Test Session"
)
self.other_course_session = create_course_session(
course=self.course, title="Other Session"
)
self.user = create_user("user")
def test_regionenleiter_has_course_session_document_access(self):
# GIVEN
csg = CourseSessionGroup.objects.create(name="Test Group", course=self.course)
csg.course_session.add(self.course_session)
csg.supervisor.add(self.user)
# WHEN
has_access = has_course_session_document_access(
self.user, self.course_session.id
)
some = CourseSessionGroup.objects.filter(
course_session=self.course_session.id, supervisor=self.user.id
)
print(some)
# THEN
self.assertTrue(has_access)
def test_regionenleiter_has_no_course_session_document_access(self):
# GIVEN
csg = CourseSessionGroup.objects.create(name="Test Group", course=self.course)
csg.course_session.add(self.other_course_session)
csg.supervisor.add(self.user)
# WHEN
has_access = has_course_session_document_access(
self.user, self.course_session.id
)
some = CourseSessionGroup.objects.filter(
course_session=self.course_session.id, supervisor=self.user.id
)
print(some)
# THEN
self.assertFalse(has_access)
def test_expert_has_course_session_document_access(self):
# GIVEN
_csu = CourseSessionUser.objects.create(
course_session=self.course_session,
user=self.user,
role=CourseSessionUser.Role.EXPERT,
)
# WHEN
has_access = has_course_session_document_access(
self.user, self.course_session.id
)
# THEN
self.assertTrue(has_access)
def test_expert_has_no_course_session_document_access(self):
# GIVEN
_csu = CourseSessionUser.objects.create(
course_session=self.course_session,
user=self.user,
role=CourseSessionUser.Role.EXPERT,
)
# WHEN
has_access = has_course_session_document_access(
self.user, self.other_course_session.id
)
# THEN
self.assertFalse(has_access)
def test_member_has_course_session_document_access(self):
# GIVEN
_csu = CourseSessionUser.objects.create(
course_session=self.course_session,
user=self.user,
role=CourseSessionUser.Role.MEMBER,
)
# WHEN
has_access = has_course_session_document_access(
self.user, self.course_session.id
)
# THEN
self.assertTrue(has_access)
def test_member_has_no_course_session_document_access(self):
# GIVEN
_csu = CourseSessionUser.objects.create(
course_session=self.course_session,
user=self.user,
role=CourseSessionUser.Role.MEMBER,
)
# WHEN
has_access = has_course_session_document_access(
self.user, self.other_course_session.id
)
# THEN
self.assertFalse(has_access)
def test_berufsbildner_has_course_session_document_access(self):
# GIVEN
member = create_user("member")
_csu = CourseSessionUser.objects.create(
course_session=self.course_session,
user=member,
role=CourseSessionUser.Role.MEMBER,
)
AgentParticipantRelation.objects.create(
agent=self.user,
participant=_csu,
role=AgentParticipantRoleType.BERUFSBILDNER.value,
)
# WHEN
has_access = has_course_session_document_access(
self.user, self.course_session.id
)
# THEN
self.assertTrue(has_access)
def test_berufsbildner_has_no_course_session_document_access(self):
# GIVEN
member = create_user("member")
_csu = CourseSessionUser.objects.create(
course_session=self.other_course_session,
user=member,
role=CourseSessionUser.Role.MEMBER,
)
AgentParticipantRelation.objects.create(
agent=self.user,
participant=_csu,
role=AgentParticipantRoleType.BERUFSBILDNER.value,
)
# WHEN
has_access = has_course_session_document_access(
self.user, self.course_session.id
)
# THEN
self.assertFalse(has_access)