Exemplo n.º 1
0
    def setUp(self):
        self.validated_teacher = ready_user(1)
        self.other_teacher = ready_user(2)
        self.inactive_user = ready_user(3)
        self.guest = ready_user(11)

        # Skip TOS interactions
        role = Role.objects.get(role="teacher")
        tos = Tos(version=1, text="Test", current=True, role=role)
        tos.save()
        consent = Consent(
            user=self.validated_teacher, accepted=True, tos=Tos.objects.first()
        )
        consent.save()

        self.group = Group.objects.get(name="Teacher")
        self.assertFalse(self.group.permissions.all())

        permission = Permission.objects.get(codename="add_question")
        self.group.permissions.add(permission)
        permission = Permission.objects.get(codename="change_question")
        self.group.permissions.add(permission)
        self.assertEqual(self.group.permissions.count(), 2)

        self.assertFalse(self.validated_teacher.get_all_permissions())
Exemplo n.º 2
0
    def consent(user, create, extracted, **kwargs):
        if not create:
            return

        if Tos.objects.exists():
            consent = Consent(user=user,
                              accepted=False,
                              tos=Tos.objects.first())
            consent.save()
Exemplo n.º 3
0
    def setUp(self):
        super(QuestionViewTestCase, self).setUp()

        UsesCriterion.objects.filter(
            quality__quality_type__type="global").delete()

        # TOS integration
        from tos.models import Consent, Role, Tos

        role = Role.objects.get(role="student")

        tos = Tos(version=1, text="Test", current=True, role=role)
        tos.save()
        no_share_user = User(username="******", email="*****@*****.**")
        no_share_user.save()
        # To test latest consent is used
        consent = Consent(user=no_share_user,
                          accepted=True,
                          tos=Tos.objects.first())
        consent.save()
        no_consent = Consent(user=no_share_user,
                             accepted=False,
                             tos=Tos.objects.first())
        no_consent.save()

        self.user = factories.UserFactory()
        self.assignment = factories.AssignmentFactory()
        self.set_question(
            factories.QuestionFactory(choices=5,
                                      choices__correct=[2, 4],
                                      choices__rationales=4))
        self.add_user_to_even_answers()
        self.addCleanup(mock.patch.stopall)
        signal_patcher = mock.patch(
            "django_lti_tool_provider.signals.Signals.Grade.updated.send")
        self.mock_send_grade_signal = signal_patcher.start()
        grade_patcher = mock.patch("peerinst.models.Answer.grade",
                                   new_callable=mock.PropertyMock)
        self.mock_grade = grade_patcher.start()
        self.mock_grade.return_value = Grade.CORRECT
Exemplo n.º 4
0
    def test_TOS_mixin(self):
        logged_in = self.client.login(
            username=self.validated_teacher.username,
            password=self.validated_teacher.text_pwd,
        )
        self.assertTrue(logged_in)

        consent = Consent(
            user=self.validated_teacher,
            accepted=False,
            tos=Tos.objects.first(),
        )
        consent.save()

        permission = Permission.objects.get(codename="add_question")
        self.validated_teacher.user_permissions.add(permission)
        permission = Permission.objects.get(codename="change_question")
        self.validated_teacher.user_permissions.add(permission)

        # Question create
        response = self.client.get(reverse("question-create"), follow=True)
        self.assertEqual(response.status_code, 403)
        self.assertTemplateUsed(response, "tos/tos_required.html")

        # Question clone
        response = self.client.get(
            reverse("question-clone", kwargs={"pk": 43}), follow=True
        )
        self.assertEqual(response.status_code, 403)
        self.assertTemplateUsed(response, "tos/tos_required.html")

        # Question update
        response = self.client.get(
            reverse("question-update", kwargs={"pk": 32}), follow=True
        )
        self.assertEqual(response.status_code, 403)
        self.assertTemplateUsed(response, "tos/tos_required.html")

        # Answer choice create/update
        response = self.client.get(
            reverse("answer-choice-form", kwargs={"question_id": 32}),
            follow=True,
        )
        self.assertEqual(response.status_code, 403)
        self.assertTemplateUsed(response, "tos/tos_required.html")

        # Sample answer create
        response = self.client.get(
            reverse("sample-answer-form", kwargs={"question_id": 32}),
            follow=True,
        )
        self.assertEqual(response.status_code, 403)
        self.assertTemplateUsed(response, "tos/tos_required.html")

        # Sample answer submit
        response = self.client.get(
            reverse("sample-answer-form-done", kwargs={"question_id": 32}),
            follow=True,
        )
        self.assertEqual(response.status_code, 403)
        self.assertTemplateUsed(response, "tos/tos_required.html")