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())
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)
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())
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)
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)
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)
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)
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)