codeforces_scraper/tests/test_main.py

61 lines
1.7 KiB
Python
Raw Permalink Normal View History

2022-11-10 22:23:31 +03:00
from codeforces_scraper import Scraper, ScraperError
from getpass import getpass
import unittest
from random import randint
CPP_LANG = 54
CONTEST_ID = 4
PROBLEM_INDEX = 'A'
SOURCE = \
"""#include <iostream>
using namespace std;
int main() {
int w; cin >> w;
if (w % 2 == 0 && w >= 4) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
"""
class LoginTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.username = input('username: ')
cls.password = getpass(f'codeforces password for {cls.username}: ')
def setUp(self):
self.scraper = Scraper()
def tearDown(self):
self.scraper.close()
def test_simple_login_logout(self):
self.assertEqual(self.scraper.fetch_current_user(), None)
self.scraper.login(self.username, self.password)
self.assertEqual(self.scraper.fetch_current_user(), self.username)
self.scraper.logout()
self.assertEqual(self.scraper.fetch_current_user(), None)
def test_same_submission(self):
self.scraper.login(self.username, self.password)
self.assertRaises(ScraperError, self.scraper.submit, CONTEST_ID, PROBLEM_INDEX, SOURCE, CPP_LANG)
def test_unique_submission(self):
salt = f'// Salt: {hex(randint(1, 1337666228))}\n'
source = salt + SOURCE
self.scraper.login(self.username, self.password)
self.scraper.submit(CONTEST_ID, PROBLEM_INDEX, source, CPP_LANG)
def test_submit_while_not_logged_in(self):
self.assertRaises(ScraperError, self.scraper.submit, CONTEST_ID, PROBLEM_INDEX, SOURCE, CPP_LANG)
def test_get_submissions(self):
self.scraper.get_submissions(CONTEST_ID, self.username)