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)