Пример #1
0
    def test_invalid_proof(self):
        submission = ProgramSubmission.objects.get(pk=1)
        _proof_data_orig, proof = submission_receipt_proof(submission)

        with self.assertRaises(ProofCorrupted):
            verify_submission_receipt_proof(proof, "spam")

        submission2 = ProgramSubmission.objects.get(pk=2)
        _proof_data_orig2, proof2 = submission_receipt_proof(submission2)

        proof_tokens = proof.split(":")
        proof2_tokens = proof2.split(":")
        proof_tokens[0] = proof2_tokens[0]
        corrupted_proof = ":".join(proof_tokens)
        with self.assertRaises(ProofCorrupted):
            verify_submission_receipt_proof(corrupted_proof, submission.source_file.read())
Пример #2
0
    def test_valid_proof(self):
        submission = ProgramSubmission.objects.get(pk=1)
        _proof_data_orig, proof = submission_receipt_proof(submission)
        proof_data = verify_submission_receipt_proof(proof, submission.source_file.read())

        self.assertEquals(proof_data["id"], submission.id)
        self.assertEquals(proof_data["date"], submission.date)
Пример #3
0
    def test_invalid_proof(self):
        submission = ProgramSubmission.objects.get(pk=1)
        _proof_data_orig, proof = submission_receipt_proof(submission)

        with self.assertRaises(ProofCorrupted):
            verify_submission_receipt_proof(proof, 'spam')

        submission2 = ProgramSubmission.objects.get(pk=2)
        _proof_data_orig2, proof2 = submission_receipt_proof(submission2)

        proof_tokens = proof.split(':')
        proof2_tokens = proof2.split(':')
        proof_tokens[0] = proof2_tokens[0]
        corrupted_proof = ':'.join(proof_tokens)
        with self.assertRaises(ProofCorrupted):
            verify_submission_receipt_proof(corrupted_proof,
                    submission.source_file.read())
Пример #4
0
    def test_valid_proof(self):
        submission = ProgramSubmission.objects.get(pk=1)
        _proof_data_orig, proof = submission_receipt_proof(submission)
        proof_data = verify_submission_receipt_proof(proof,
                submission.source_file.read())

        self.assertEquals(proof_data['id'], submission.id)
        self.assertEquals(proof_data['date'], submission.date)
Пример #5
0
    def test_sending_receipt(self):
        contest = Contest.objects.get()
        problem_instance = ProblemInstance.objects.get()
        self.client.login(username="******")
        response = self.submit_file(contest, problem_instance, file_size=1337)
        self._assertSubmitted(contest, response)

        email = mail.outbox[0].message().as_string()
        del mail.outbox[0]
        self.assertIn("Submissions to this task: 2", email)
        self.assertIn("1337 bytes", email)
        proof = re.search(r"--- BEGIN PROOF DATA ---(.*)--- END PROOF DATA ---", email, re.DOTALL)
        self.assertTrue(proof)
        verify_submission_receipt_proof(proof.group(1), "a" * 1337)

        self.client.login(username="******")
        response = self.submit_file(contest, problem_instance, user="******", kind="NORMAL")
        self._assertSubmitted(contest, response)
        self.assertEquals(len(mail.outbox), 1)
Пример #6
0
    def test_sending_receipt(self):
        contest = Contest.objects.get()
        problem_instance = ProblemInstance.objects.get()
        self.client.login(username='******')
        response = self.submit_file(contest, problem_instance, file_size=1337)
        self._assertSubmitted(contest, response)

        email = mail.outbox[0].message().as_string()
        del mail.outbox[0]
        self.assertIn("Submissions to this task: 2", email)
        self.assertIn("1337 bytes", email)
        proof = re.search(
                r'--- BEGIN PROOF DATA ---(.*)--- END PROOF DATA ---',
                email, re.DOTALL)
        self.assertTrue(proof)
        verify_submission_receipt_proof(proof.group(1), 'a' * 1337)

        self.client.login(username='******')
        response = self.submit_file(contest, problem_instance,
                user='******', kind='NORMAL')
        self._assertSubmitted(contest, response)
        self.assertEquals(len(mail.outbox), 1)
Пример #7
0
    def handle(self, *args, **options):
        filename = options['source_file']
        if not os.path.exists(filename):
            raise CommandError(_("File not found: ") + filename)
        source = open(filename, 'r').read()

        match = re.search(
                r'--- BEGIN PROOF DATA ---(.*)--- END PROOF DATA ---',
                sys.stdin.read(), re.DOTALL)
        if not match:
            raise CommandError(_("Proof not found in the pasted text."))
        proof = match.group(1)

        try:
            proof_data = verify_submission_receipt_proof(proof, source)
        except ProofCorrupted as e:
            raise CommandError(str(e))

        sys.stdout.write(_("Confirmation is valid\n"))
        pprint(proof_data, sys.stdout)
Пример #8
0
    def handle(self, *args, **options):
        filename = options['source_file']
        if not os.path.exists(filename):
            raise CommandError(_("File not found: ") + filename)
        source = open(filename, 'r').read()

        match = re.search(
            r'--- BEGIN PROOF DATA ---(.*)--- END PROOF DATA ---',
            sys.stdin.read(), re.DOTALL)
        if not match:
            raise CommandError(_("Proof not found in the pasted text."))
        proof = match.group(1)

        try:
            proof_data = verify_submission_receipt_proof(proof, source)
        except ProofCorrupted as e:
            raise CommandError(str(e))

        sys.stdout.write(_("Confirmation is valid\n"))
        pprint(proof_data, sys.stdout)