177 lines
5.1 KiB
Python
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)
|