From ab751ee4b5c73804e5cfd662ce8053f7d9d8ca8b Mon Sep 17 00:00:00 2001 From: zema1 Date: Mon, 6 Aug 2018 22:19:09 +0800 Subject: [PATCH] Fixed: #164 --- submission/tests.py | 14 ++++++++++++-- submission/views/oj.py | 3 ++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/submission/tests.py b/submission/tests.py index fdcd12e..42417ea 100644 --- a/submission/tests.py +++ b/submission/tests.py @@ -1,9 +1,9 @@ -from unittest import mock from copy import deepcopy +from unittest import mock -from .models import Submission from problem.models import Problem, ProblemTag from utils.api.tests import APITestCase +from .models import Submission DEFAULT_PROBLEM_DATA = {"_id": "A-110", "title": "test", "description": "

test

", "input_description": "test", "output_description": "test", "time_limit": 1000, "memory_limit": 256, "difficulty": "Low", @@ -25,6 +25,8 @@ DEFAULT_SUBMISSION_DATA = { "language": "C", "statistic_info": {} } + + # todo contest submission @@ -66,3 +68,11 @@ class SubmissionAPITest(SubmissionPrepare): resp = self.client.post(self.url, self.submission_data) self.assertSuccess(resp) judge_task.assert_called() + + def test_create_submission_with_wrong_language(self, judge_task): + self.submission_data.update({"language": "Python3"}) + resp = self.client.post(self.url, self.submission_data) + self.assertFailed(resp) + self.assertDictEqual(resp.data, {"error": "error", + "data": "Python3 is now allowed in the problem"}) + judge_task.assert_not_called() diff --git a/submission/views/oj.py b/submission/views/oj.py index 3228800..7ef9ff9 100644 --- a/submission/views/oj.py +++ b/submission/views/oj.py @@ -64,7 +64,8 @@ class SubmissionAPI(APIView): problem = Problem.objects.get(id=data["problem_id"], contest_id=data.get("contest_id"), visible=True) except Problem.DoesNotExist: return self.error("Problem not exist") - + if data["language"] not in problem.languages: + return self.error(f"{data['language']} is now allowed in the problem") submission = Submission.objects.create(user_id=request.user.id, username=request.user.username, language=data["language"],