Exemple #1
0
    def test_create_assessmentitems(self):
        self.client.force_authenticate(user=self.user)
        assessmentitem1 = self.assessmentitem_metadata
        assessmentitem2 = self.assessmentitem_metadata
        response = self.client.post(
            self.sync_url,
            [
                generate_create_event(
                    [assessmentitem1["contentnode"], assessmentitem1["assessment_id"]],
                    ASSESSMENTITEM,
                    assessmentitem1,
                ),
                generate_create_event(
                    [assessmentitem2["contentnode"], assessmentitem2["assessment_id"]],
                    ASSESSMENTITEM,
                    assessmentitem2,
                ),
            ],
            format="json",
        )
        self.assertEqual(response.status_code, 200, response.content)
        try:
            models.AssessmentItem.objects.get(
                assessment_id=assessmentitem1["assessment_id"]
            )
        except models.AssessmentItem.DoesNotExist:
            self.fail("AssessmentItem 1 was not created")

        try:
            models.AssessmentItem.objects.get(
                assessment_id=assessmentitem2["assessment_id"]
            )
        except models.AssessmentItem.DoesNotExist:
            self.fail("AssessmentItem 2 was not created")
Exemple #2
0
    def test_cannot_create_files(self):
        self.client.force_authenticate(user=self.user)
        file1 = self.file_metadata
        file2 = self.file_metadata
        with self.settings(TEST_ENV=False):
            # Override test env here to check what will happen in production
            response = self.client.post(
                self.sync_url,
                [
                    generate_create_event(
                        file1["id"],
                        FILE,
                        file1,
                    ),
                    generate_create_event(
                        file2["id"],
                        FILE,
                        file2,
                    ),
                ],
                format="json",
            )
        self.assertEqual(response.status_code, 400, response.content)
        try:
            models.File.objects.get(id=file1["id"])
            self.fail("File 1 was created")
        except models.File.DoesNotExist:
            pass

        try:
            models.File.objects.get(id=file2["id"])
            self.fail("File 2 was created")
        except models.File.DoesNotExist:
            pass
Exemple #3
0
    def test_create_invitations(self):
        self.client.force_authenticate(user=self.user)
        invitation1 = self.invitation_metadata
        invitation2 = self.invitation_metadata
        response = self.client.post(
            self.sync_url,
            [
                generate_create_event(
                    invitation1["id"],
                    INVITATION,
                    invitation1,
                ),
                generate_create_event(
                    invitation2["id"],
                    INVITATION,
                    invitation2,
                ),
            ],
            format="json",
        )
        self.assertEqual(response.status_code, 200, response.content)
        try:
            models.Invitation.objects.get(id=invitation1["id"])
        except models.Invitation.DoesNotExist:
            self.fail("Invitation 1 was not created")

        try:
            models.Invitation.objects.get(id=invitation2["id"])
        except models.Invitation.DoesNotExist:
            self.fail("Invitation 2 was not created")
Exemple #4
0
    def test_create_channelsets(self):
        self.client.force_authenticate(user=self.user)
        channelset1 = self.channelset_metadata
        channelset2 = self.channelset_metadata
        response = self.client.post(
            self.sync_url,
            [
                generate_create_event(
                    channelset1["id"],
                    CHANNELSET,
                    channelset1,
                ),
                generate_create_event(
                    channelset2["id"],
                    CHANNELSET,
                    channelset2,
                ),
            ],
            format="json",
        )
        self.assertEqual(response.status_code, 200, response.content)
        try:
            models.ChannelSet.objects.get(id=channelset1["id"])
        except models.ChannelSet.DoesNotExist:
            self.fail("ChannelSet 1 was not created")

        try:
            models.ChannelSet.objects.get(id=channelset2["id"])
        except models.ChannelSet.DoesNotExist:
            self.fail("ChannelSet 2 was not created")
Exemple #5
0
    def test_create_assessmentitem_with_file_question(self):
        self.client.force_authenticate(user=self.user)
        assessmentitem = self.assessmentitem_metadata
        image_file = testdata.fileobj_exercise_image()
        image_file.uploaded_by = self.user
        image_file.save()
        question = "![alt_text](${}/{}.{})".format(
            exercises.IMG_PLACEHOLDER, image_file.checksum, image_file.file_format_id
        )

        assessmentitem["question"] = question
        response = self.client.post(
            self.sync_url,
            [
                generate_create_event(
                    [assessmentitem["contentnode"], assessmentitem["assessment_id"]],
                    ASSESSMENTITEM,
                    assessmentitem,
                )
            ],
            format="json",
        )
        self.assertEqual(response.status_code, 200, response.content)
        try:
            ai = models.AssessmentItem.objects.get(
                assessment_id=assessmentitem["assessment_id"]
            )
        except models.AssessmentItem.DoesNotExist:
            self.fail("AssessmentItem was not created")
        try:
            file = ai.files.get()
            self.assertEqual(file.id, image_file.id)
        except models.File.DoesNotExist:
            self.fail("File was not updated")
Exemple #6
0
    def test_create_assessmentitem_with_file_no_permission(self):
        self.client.force_authenticate(user=self.user)
        assessmentitem = self.assessmentitem_metadata
        image_file = testdata.fileobj_exercise_image()
        question = "![alt_text](${}/{}.{})".format(
            exercises.IMG_PLACEHOLDER, image_file.checksum, image_file.file_format_id
        )
        assessmentitem["question"] = question
        response = self.client.post(
            self.sync_url,
            [
                generate_create_event(
                    [assessmentitem["contentnode"], assessmentitem["assessment_id"]],
                    ASSESSMENTITEM,
                    assessmentitem,
                )
            ],
            format="json",
        )
        self.assertEqual(response.status_code, 400, response.content)
        try:
            models.AssessmentItem.objects.get(
                assessment_id=assessmentitem["assessment_id"]
            )
            self.fail("AssessmentItem was created")
        except models.AssessmentItem.DoesNotExist:
            pass

        self.assertIsNone(image_file.assessment_item)
Exemple #7
0
 def test_create_editor_and_viewer(self):
     editor = testdata.user(email="*****@*****.**")
     viewer = testdata.user(email="*****@*****.**")
     self.client.force_authenticate(user=self.user)
     response = self.client.post(
         self.sync_url,
         [
             generate_create_event([editor.id, self.channel.id], EDITOR_M2M,
                                   {}),
             generate_create_event([viewer.id, self.channel.id], VIEWER_M2M,
                                   {}),
         ],
         format="json",
     )
     self.assertEqual(response.status_code, 200, response.content)
     self.assertTrue(self.channel.editors.filter(id=editor.id).exists())
     self.assertTrue(self.channel.viewers.filter(id=viewer.id).exists())
Exemple #8
0
 def create_task_event(self, task):
     """
     :type task: contentcuration.models.Task
     """
     from contentcuration.viewsets.task import TaskViewSet
     task_viewset = TaskViewSet(request=self.request)
     task_viewset.initial(self.request)
     return generate_create_event(task.task_id, TASK,
                                  task_viewset.serialize_object(pk=task.pk))
Exemple #9
0
 def test_create_clipboard(self):
     self.client.force_authenticate(user=self.user)
     clipboard = self.clipboard_metadata
     response = self.client.post(
         self.sync_url,
         [generate_create_event(clipboard["id"], CLIPBOARD, clipboard)],
         format="json",
     )
     self.assertEqual(response.status_code, 200, response.content)
     try:
         models.ContentNode.objects.get(id=clipboard["id"])
     except models.ContentNode.DoesNotExist:
         self.fail("ContentNode was not created")
Exemple #10
0
    def test_create_channels(self):
        user = testdata.user()
        self.client.force_authenticate(user=user)
        channel1 = self.channel_metadata
        channel2 = self.channel_metadata
        response = self.client.post(
            self.sync_url,
            [
                generate_create_event(channel1["id"], CHANNEL, channel1),
                generate_create_event(channel2["id"], CHANNEL, channel2),
            ],
            format="json",
        )
        self.assertEqual(response.status_code, 200, response.content)
        try:
            models.Channel.objects.get(id=channel1["id"])
        except models.Channel.DoesNotExist:
            self.fail("Channel 1 was not created")

        try:
            models.Channel.objects.get(id=channel2["id"])
        except models.Channel.DoesNotExist:
            self.fail("Channel 2 was not created")
Exemple #11
0
    def test_create_clipboard_with_parent(self):
        channel = testdata.channel()
        channel.editors.add(self.user)
        self.client.force_authenticate(user=self.user)
        clipboard = self.clipboard_metadata
        clipboard["parent"] = channel.main_tree_id
        response = self.client.post(
            self.sync_url,
            [generate_create_event(clipboard["id"], CLIPBOARD, clipboard)],
            format="json",
        )
        self.assertEqual(response.status_code, 200, response.content)
        try:
            new_node = models.ContentNode.objects.get(id=clipboard["id"])
        except models.ContentNode.DoesNotExist:
            self.fail("ContentNode was not created")

        self.assertEqual(new_node.parent_id, channel.main_tree_id)