def test_making_complaint(self): contest = Contest.objects.get() contest.controller_name = 'oioioi.oi.controllers.OIOnsiteContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='ACTIVE') p.save() with fake_time(datetime(2012, 8, 11, tzinfo=utc)): self.assertTrue(self.client.login(username='******')) response = self.client.post( reverse('add_complaint', kwargs={'contest_id': contest.id}), {'complaint': "I am innocent! It is your fault!"}, follow=True, ) self.assertEqual(response.status_code, 403) cconfig = ComplaintsConfig( contest=contest, enabled=True, start_date=datetime(2012, 8, 10, tzinfo=utc), end_date=datetime(2012, 8, 12, tzinfo=utc), ) cconfig.save() with fake_time(datetime(2012, 8, 9, tzinfo=utc)): response = self.client.get( reverse('add_complaint', kwargs={'contest_id': contest.id})) self.assertEqual(response.status_code, 403) with fake_time(datetime(2012, 8, 13, tzinfo=utc)): response = self.client.get( reverse('add_complaint', kwargs={'contest_id': contest.id})) self.assertEqual(response.status_code, 403) with fake_time(datetime(2012, 8, 11, tzinfo=utc)): response = self.client.post( reverse('add_complaint', kwargs={'contest_id': contest.id}), {'complaint': "I am innocent! It is your fault!"}, follow=True, ) self.assertEqual(response.status_code, 200) self.assertContains(response, "has been sent") jurym = mail.outbox[0].message() userm = mail.outbox[1].message() del mail.outbox[:] # Header class doesn't offer 'in' operator expected = "[oioioi-complaints] Complaint: Test User (test_user)" self.assertEqual(expected, jurym['Subject']) self.assertEqual(expected, userm['Subject']) self.assertEqual("*****@*****.**", jurym['To']) self.assertEqual("*****@*****.**", userm['To']) self.assertEqual(jurym['Message-ID'], userm['References']) self.assertEqual(userm['Message-ID'], jurym['References']) self.assertIn("your fault!", jurym.as_string()) self.assertIn("your fault!", userm.as_string())
def test_both_hands_cascading_on_registration_delete(self): def _assert_equals_len(expectedLen=None): self.assertEqual(Participant.objects.count(), TestRegistration.objects.count()) if expectedLen: self.assertEqual(Participant.objects.count(), expectedLen) contest = Contest.objects.get() contest.controller_name = ( 'oioioi.participants.tests.ParticipantsContestController') contest.save() reg = [] for user in User.objects.all(): p = Participant(contest=contest, user=user) p.save() r = TestRegistration(participant=p, name='trolololo') r.save() reg.append(r) _assert_equals_len(len(reg)) reg[0].delete() _assert_equals_len(len(reg) - 1) reg[1].participant.delete() _assert_equals_len(len(reg) - 2) reg = TestRegistration.objects.filter(name='trolololo').delete() _assert_equals_len(0)
def test_both_hands_cascading_on_registration_delete(self): def _assert_equals_len(expectedLen=None): self.assertEquals(Participant.objects.count(), TestRegistration.objects.count()) if expectedLen: self.assertEquals(Participant.objects.count(), expectedLen) contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.ParticipantsContestController' contest.save() reg = [] for user in User.objects.all(): p = Participant(contest=contest, user=user) p.save() r = TestRegistration(participant=p, name='trolololo') r.save() reg.append(r) _assert_equals_len(len(reg)) reg[0].delete() _assert_equals_len(len(reg) - 1) reg[1].participant.delete() _assert_equals_len(len(reg) - 2) reg = TestRegistration.objects.filter(name='trolololo').delete() _assert_equals_len(0)
def setUp(self): contest = Contest.objects.get() contest.controller_name = 'oioioi.amppz.controllers.AMPPZContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save()
def test_contest_info(self): contest = Contest.objects.get() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() OpenRegistration(participant_id=p.id, **self.reg_data).save() url = reverse('contest_info', kwargs={'contest_id': contest.id}) data = self.client.get(url).json() self.assertEqual(data['users_count'], 1)
def test_missing_registration_model(self): contest = Contest.objects.get() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() self.assertRaises(ObjectDoesNotExist, lambda: getattr(p, 'registration_model'))
def setUp(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.amppz.controllers.AMPPZContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save()
def test_making_complaint(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.oi.controllers.OIOnsiteContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='ACTIVE') p.save() with fake_time(datetime(2012, 8, 11, tzinfo=utc)): self.client.login(username='******') response = self.client.post(reverse('add_complaint', kwargs={'contest_id': contest.id}), {'complaint': "I am innocent! It is your fault!"}, follow=True) self.assertEqual(response.status_code, 403) cconfig = ComplaintsConfig(contest=contest, enabled=True, start_date=datetime(2012, 8, 10, tzinfo=utc), end_date=datetime(2012, 8, 12, tzinfo=utc)) cconfig.save() with fake_time(datetime(2012, 8, 9, tzinfo=utc)): response = self.client.get(reverse('add_complaint', kwargs={'contest_id': contest.id})) self.assertEqual(response.status_code, 403) with fake_time(datetime(2012, 8, 13, tzinfo=utc)): response = self.client.get(reverse('add_complaint', kwargs={'contest_id': contest.id})) self.assertEqual(response.status_code, 403) with fake_time(datetime(2012, 8, 11, tzinfo=utc)): response = self.client.post(reverse('add_complaint', kwargs={'contest_id': contest.id}), {'complaint': "I am innocent! It is your fault!"}, follow=True) self.assertEqual(response.status_code, 200) self.assertContains(response, "has been sent") jurym = mail.outbox[0].message() userm = mail.outbox[1].message() del mail.outbox # Header class doesn't offer 'in' operator self.assertEqual("[oioioi-complaints] Complaint: Test User (test_user)", jurym['Subject']) self.assertEqual("[oioioi-complaints] Complaint: Test User (test_user)", userm['Subject']) self.assertEquals("*****@*****.**", jurym['To']) self.assertEquals("*****@*****.**", userm['To']) self.assertEquals(jurym['Message-ID'], userm['References']) self.assertEquals(userm['Message-ID'], jurym['References']) self.assertIn("your fault!", jurym.as_string()) self.assertIn("your fault!", userm.as_string())
def test_participants_accounts_menu(self): contest = Contest.objects.get() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() self.assertTrue(self.client.login(username='******')) url = reverse('default_contest_view', kwargs={'contest_id': contest.id}) response = self.client.get(url, follow=True) self.assertNotContains(response, 'Register to the contest') self.assertNotContains(response, 'Edit contest registration')
def test_user_info_page(self): contest = Contest.objects.get() contest.controller_name = \ "oioioi.participants.tests.ParticipantsContestController" contest.save() user = User.objects.get(pk=1001) p = Participant(contest=contest, user=user) p.save() url = reverse('user_info', kwargs={'contest_id': contest.id, 'user_id': user.id}) self.client.login(username='******') response = self.client.get(url) self.assertIn('<h4>Participant info:</h4>', response.content)
def test_participants_accounts_menu(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.oi.controllers.OIOnsiteContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() self.client.login(username='******') response = self.client.get('/c/%s/' % (contest.id,), follow=True) self.assertNotIn('Register to the contest', response.content) self.assertNotIn('Edit contest registration', response.content)
def test_participants_accounts_menu(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.ParticipantsContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() self.client.login(username='******') url = reverse('default_contest_view', kwargs={'contest_id': contest.id}) response = self.client.get(url, follow=True) self.assertNotIn('Register to the contest', response.content) self.assertIn('Edit contest registration', response.content)
def setUp(self): contest = Contest.objects.get() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='ACTIVE') p.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='ACTIVE') p.save()
def add_usergroup_to_members(contest, usergroup, only_exclusive=True): users = usergroup.members if only_exclusive: users = filter_usergroup_exclusive_members(contest, usergroup, users) users = users.exclude(participant__contest__id=contest.id) Participant.objects.bulk_create( [Participant(contest=contest, user=u) for u in users])
def test_contest_admin_with_participant(self): self.c2.controller_name = ( 'oioioi.participants.tests.ParticipantsContestController') self.c2.save() ContestPermission(user=self.user, contest=self.c1, permission='contests.contest_admin').save() Participant(user=self.user, contest=self.c2).save() ex_conf1 = ExclusivenessConfig() ex_conf1.contest = self.c1 ex_conf1.start_date = datetime(2012, 1, 1, 8, tzinfo=utc) ex_conf1.end_date = datetime(2012, 1, 1, 12, tzinfo=utc) ex_conf1.save() ex_conf2 = ExclusivenessConfig() ex_conf2.contest = self.c2 ex_conf2.start_date = datetime(2012, 1, 1, 8, tzinfo=utc) ex_conf2.end_date = datetime(2012, 1, 1, 12, tzinfo=utc) ex_conf2.save() self.assertTrue(self.client.login(username='******')) with fake_time(datetime(2012, 1, 1, 10, tzinfo=utc)): self._assertContestVisible('c2') self._assertContestRedirects('c1', '/c/c2')
def test_participants_accounts_menu(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.ParticipantsContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() self.client.login(username='******') url = reverse('default_contest_view', kwargs={'contest_id': contest.id}) response = self.client.get(url, follow=True) self.assertNotIn('Register to the contest', response.content) self.assertNotIn('Edit contest registration', response.content)
def test_user_info_page(self): contest = Contest.objects.get() contest.controller_name = ( "oioioi.participants.tests.ParticipantsContestController") contest.save() user = User.objects.get(pk=1001) p = Participant(contest=contest, user=user) p.save() url = reverse('user_info', kwargs={ 'contest_id': contest.id, 'user_id': user.id }) self.assertTrue(self.client.login(username='******')) response = self.client.get(url) self.assertContains(response, 'Participant info')
def test_submit_permissions(self): contest = Contest.objects.get() contest.controller_name = ( 'oioioi.participants.tests.ParticipantsContestController') contest.save() round = Round.objects.get(pk=1) problem_instance = ProblemInstance.objects.get(pk=1) self.assertTrue(problem_instance.round == round) round.start_date = datetime(2012, 7, 31, tzinfo=utc) round.end_date = datetime(2012, 8, 5, tzinfo=utc) round.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() with fake_time(datetime(2012, 8, 4, 0, 5, tzinfo=utc)): self.assertTrue(self.client.login(username='******')) response = self.submit_file(contest, problem_instance) self.assertEqual(403, response.status_code) self.assertTrue(self.client.login(username='******')) response = self.submit_file(contest, problem_instance) self.assertEqual(403, response.status_code) p.status = 'ACTIVE' p.save() self.assertTrue(self.client.login(username='******')) response = self.submit_file(contest, problem_instance) self._assertSubmitted(contest, response)
def test_contest_visibility(self): contest = Contest(id='invisible', name='Invisible Contest') contest.controller_name = 'oioioi.participants.tests.OnsiteContestController' contest.save() user = User.objects.get(username='******') response = self.client.get(reverse('select_contest')) self.assertIn('contests/select_contest.html', [t.name for t in response.templates]) self.assertEqual(len(response.context['contests']), 1) self.assertTrue(self.client.login(username='******')) response = self.client.get(reverse('select_contest')) self.assertEqual(len(response.context['contests']), 1) p1 = Participant(contest=contest, user=user, status='BANNED') p1.save() self.assertTrue(self.client.login(username='******')) response = self.client.get(reverse('select_contest')) self.assertEqual(len(response.context['contests']), 1) p1.status = 'ACTIVE' p1.save() self.assertTrue(self.client.login(username='******')) response = self.client.get(reverse('select_contest')) self.assertEqual(len(response.context['contests']), 2) self.assertTrue(self.client.login(username='******')) response = self.client.get(reverse('select_contest')) self.assertEqual(len(response.context['contests']), 2) self.assertContains(response, 'Invisible Contest')
def test_participants_unregister(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.OpenRegistrationContestController' contest.save() url = reverse('participants_unregister', kwargs={'contest_id': contest.id}) self.client.login(username='******') response = self.client.post(url, {'post': 'yes'}) self.assertEqual(403, response.status_code) user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() self.assertEqual(Participant.objects.count(), 1) self.client.login(username='******') response = self.client.post(url, {'post': 'yes'}) self.assertEqual(403, response.status_code) p.status = 'ACTIVE' p.save() self.client.login(username='******') response = self.client.post(url, {'post': 'yes'}) self.assertEqual(302, response.status_code) self.assertEqual(Participant.objects.count(), 0)
def test_contest_access(self): contest = Contest.objects.get() contest.controller_name = 'oioioi.oi.controllers.OIContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() url = reverse('default_contest_view', kwargs={'contest_id': contest.id}) self.assertTrue(self.client.login(username='******')) response = self.client.get(url, follow=True) self.assertEqual(200, response.status_code) self.assertTrue(self.client.login(username='******')) response = self.client.get(url, follow=True) self.assertEqual(200, response.status_code) p.status = 'ACTIVE' p.save() self.assertTrue(self.client.login(username='******')) response = self.client.get(url, follow=True) self.assertEqual(200, response.status_code)
def test_participants_unregister_forbidden(self): contest = Contest.objects.get() url = reverse('participants_unregister', kwargs={'contest_id': contest.id}) self.assertTrue(self.client.login(username='******')) response = self.client.post(url, {'post': 'yes'}) self.assertEqual(403, response.status_code) user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() self.assertEqual(Participant.objects.count(), 1) self.assertTrue(self.client.login(username='******')) response = self.client.post(url, {'post': 'yes'}) self.assertEqual(403, response.status_code) p.status = 'ACTIVE' p.save() self.assertTrue(self.client.login(username='******')) response = self.client.post(url, {'post': 'yes'}) self.assertEqual(403, response.status_code)
def test_participants_contest_access(self): contest = Contest.objects.get() contest.controller_name = ( 'oioioi.participants.tests.ParticipantsContestController') contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() url = reverse('default_contest_view', kwargs={'contest_id': contest.id}) self.assertTrue(self.client.login(username='******')) response = self.client.get(url, follow=True) # Make sure we get nice page, allowing to log out. self.assertNotContains(response, 'My submissions', status_code=403) self.assertContains(response, 'OIOIOI', status_code=403) self.assertContains(response, 'Log out', status_code=403) self.assertTrue(self.client.login(username='******')) response = self.client.get(url, follow=True) self.assertEqual(403, response.status_code) p.status = 'ACTIVE' p.save() self.assertTrue(self.client.login(username='******')) response = self.client.get(url, follow=True) self.assertEqual(200, response.status_code)
def test_noadmin_admin_visibility(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.NoAdminParticipantsContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() url = reverse('oioioiadmin:participants_participant_changelist') self.client.login(username='******') check_not_accessible(self, url) self.client.login(username='******') check_not_accessible(self, url) self.client.login(username='******') check_not_accessible(self, url)
def test_ranking_access(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.oi.controllers.OIContestController' contest.save() round = contest.round_set.get() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() url = reverse('default_ranking', kwargs={'contest_id': contest.id}) with fake_timezone_now(round.results_date + timedelta(days=1)): self.client.login(username='******') response = self.client.get(url) self.assertContains(response, "No rankings available.") self.client.login(username='******') response = self.client.get(url) self.assertContains(response, '>Test User</a>')
def test_onsite_user_info_page(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.OnsiteContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() reg = OnsiteRegistration(participant=p, number=3, local_number=5) reg.save() self.assertTrue(self.client.login(username='******')) url = reverse('user_info', kwargs={'contest_id': contest.id, 'user_id': user.id}) response = self.client.get(url) self.assertContains(response, '<h4>OI info:</h4>')
def test_ranking_access(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.oi.controllers.OIContestController' contest.save() round = contest.round_set.get() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() url = reverse('default_ranking', kwargs={'contest_id': contest.id}) with fake_time(round.results_date + timedelta(days=1)): self.client.login(username='******') response = self.client.get(url) self.assertContains(response, "No rankings available.") self.client.login(username='******') response = self.client.get(url) self.assertContains(response, '>Test User</a>')
def test_onsite_user_info_page(self): contest = Contest.objects.get() contest.controller_name = 'oioioi.participants.tests.OnsiteContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() reg = OnsiteRegistration(participant=p, number=3, local_number=5) reg.save() self.assertTrue(self.client.login(username='******')) url = reverse('user_info', kwargs={ 'contest_id': contest.id, 'user_id': user.id }) response = self.client.get(url) self.assertContains(response, '<h4>OI info:</h4>')
def test_noadmin_admin_visibility(self): contest = Contest.objects.get() contest.controller_name = ('oioioi.participants.tests.' 'NoAdminParticipantsContestController') contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() self.client.get('/c/c/') # 'c' becomes the current contest url = reverse('oioioiadmin:participants_participant_changelist') self.assertTrue(self.client.login(username='******')) check_not_accessible(self, url) self.assertTrue(self.client.login(username='******')) check_not_accessible(self, url) self.assertTrue(self.client.login(username='******')) check_not_accessible(self, url)
def test_participants_unregister(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.ParticipantsContestController' contest.save() url = reverse('participants_unregister', kwargs={'contest_id': contest.id}) self.client.login(username='******') response = self.client.post(url, {'post': 'yes'}) self.assertEqual(403, response.status_code) user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() self.assertEqual(Participant.objects.count(), 1) response = self.client.post(url, {'post': 'yes'}) self.assertEqual(403, response.status_code) self.assertEqual(Participant.objects.count(), 1)
def test_contest_access(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.oi.controllers.OIContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() url = reverse('default_contest_view', kwargs={'contest_id': contest.id}) self.client.login(username='******') response = self.client.get(url, follow=True) self.assertEqual(200, response.status_code) self.client.login(username='******') response = self.client.get(url, follow=True) self.assertEqual(200, response.status_code) p.status = 'ACTIVE' p.save() self.client.login(username='******') response = self.client.get(url, follow=True) self.assertEqual(200, response.status_code)
def test_participants_contest_visibility(self): contest = Contest(id='invisible', name='Invisible Contest') contest.controller_name = \ 'oioioi.participants.tests.ParticipantsContestController' contest.save() user = User.objects.get(username='******') response = self.client.get(reverse('select_contest')) self.assertIn('contests/select_contest.html', [t.name for t in response.templates]) self.assertEqual(len(response.context['contests']), 1) self.client.login(username='******') response = self.client.get(reverse('select_contest')) self.assertEqual(len(response.context['contests']), 1) p1 = Participant(contest=contest, user=user, status='BANNED') p1.save() self.client.login(username='******') response = self.client.get(reverse('select_contest')) self.assertEqual(len(response.context['contests']), 1) p1.status = 'ACTIVE' p1.save() self.client.login(username='******') response = self.client.get(reverse('select_contest')) self.assertEqual(len(response.context['contests']), 2) self.client.login(username='******') response = self.client.get(reverse('select_contest')) self.assertEqual(len(response.context['contests']), 2) self.assertIn('Invisible Contest', response.content)
def test_participants_unregister(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.oi.controllers.OIOnsiteContestController' contest.save() self.client.login(username='******') response = self.client.post('/c/%s/unregister' % (contest.id,), {'post': 'yes'}) self.assertEqual(404, response.status_code) user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() self.assertEqual(Participant.objects.count(), 1) self.client.login(username='******') response = self.client.post('/c/%s/unregister' % (contest.id,), {'post': 'yes'}) self.assertEqual(403, response.status_code) p.status = 'ACTIVE' p.save() self.client.login(username='******') response = self.client.post('/c/%s/unregister' % (contest.id,), {'post': 'yes'}) self.assertEqual(403, response.status_code)
def test_submit_permissions(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.ParticipantsContestController' contest.save() round = Round.objects.get(pk=1) problem_instance = ProblemInstance.objects.get(pk=1) self.assertTrue(problem_instance.round == round) round.start_date = datetime(2012, 7, 31, tzinfo=utc) round.end_date = datetime(2012, 8, 5, tzinfo=utc) round.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() with fake_time(datetime(2012, 8, 4, 0, 5, tzinfo=utc)): self.client.login(username='******') response = self.submit_file(contest, problem_instance) self.assertEqual(403, response.status_code) self.client.login(username='******') response = self.submit_file(contest, problem_instance) self.assertEqual(403, response.status_code) p.status = 'ACTIVE' p.save() self.client.login(username='******') response = self.submit_file(contest, problem_instance) self._assertSubmitted(contest, response)
def test_participants_contest_access(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.ParticipantsContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() url = reverse('default_contest_view', kwargs={'contest_id': contest.id}) self.client.login(username='******') response = self.client.get(url, follow=True) self.assertEqual(403, response.status_code) # Make sure we get nice page, allowing to log out. self.assertNotIn('My submissions', response.content) self.assertIn('OIOIOI', response.content) self.assertIn('Log out', response.content) self.client.login(username='******') response = self.client.get(url, follow=True) self.assertEqual(403, response.status_code) p.status = 'ACTIVE' p.save() self.client.login(username='******') response = self.client.get(url, follow=True) self.assertEqual(200, response.status_code)
def test_participants_contest_access(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.ParticipantsContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() self.client.login(username='******') response = self.client.get('/c/%s/' % (contest.id,), follow=True) self.assertEqual(403, response.status_code) self.client.login(username='******') response = self.client.get('/c/%s/' % (contest.id,), follow=True) self.assertEqual(403, response.status_code) p.status = 'ACTIVE' p.save() self.client.login(username='******') response = self.client.get('/c/%s/' % (contest.id,), follow=True) self.assertEqual(200, response.status_code)
def setUp(self): contest = Contest.objects.get() user = User.objects.get(username="******") p = Participant(contest=contest, user=user, status="ACTIVE") p.save() user = User.objects.get(username="******") p = Participant(contest=contest, user=user, status="ACTIVE") p.save()
def test_participants_admin_visibility(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.ParticipantsContestController' contest.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user) p.save() self.client.get('/c/c/') # 'c' becomes the current contest url = reverse('oioioiadmin:participants_participant_changelist') self.client.login(username='******') check_not_accessible(self, url) self.client.login(username='******') response = self.client.get(url) self.assertContains(response, 'test_user') self.client.login(username='******') response = self.client.get(url) self.assertContains(response, 'test_user')
def test_mailsubmit_permissions(self): contest = Contest.objects.get() contest.controller_name = ( 'oioioi.participants.tests.ParticipantsContestController' ) contest.save() problem_instance = ProblemInstance.objects.get() problem_instance.submissions_limit = 0 problem_instance.save() round = Round.objects.get() round.start_date = datetime(2012, 7, 31, tzinfo=utc) round.end_date = datetime(2012, 8, 10, tzinfo=utc) round.save() msc = MailSubmissionConfig( contest=contest, enabled=True, start_date=datetime(2012, 8, 12, tzinfo=utc), end_date=datetime(2012, 8, 14, tzinfo=utc), ) msc.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() with fake_time(datetime(2012, 8, 13, 0, 5, tzinfo=utc)): self.assertTrue(self.client.login(username='******')) response = self.submit_file(contest, problem_instance) self.assertEqual(403, response.status_code) self.assertTrue(self.client.login(username='******')) response = self.submit_file(contest, problem_instance) self.assertEqual(403, response.status_code) p.status = 'ACTIVE' p.save() self.assertEqual(MailSubmission.objects.count(), 0) self.assertTrue(self.client.login(username='******')) response = self.submit_file(contest, problem_instance) self.assertEqual(200, response.status_code) self.assertEqual(MailSubmission.objects.count(), 1)
def test_participants_selector(self): self.c1.controller_name = ( 'oioioi.participants.tests.ParticipantsContestController') self.c1.save() Participant(user=self.user, contest=self.c1).save() self.assertTrue(self.client.login(username='******')) self._assertContestVisible('c1') self._assertContestVisible('c2') ex_conf = ExclusivenessConfig() ex_conf.contest = self.c1 ex_conf.start_date = datetime(2012, 1, 1, 8, tzinfo=utc) ex_conf.end_date = datetime(2012, 1, 1, 12, tzinfo=utc) ex_conf.save() with fake_time(datetime(2012, 1, 1, 10, tzinfo=utc)): self._assertContestVisible('c1') self._assertContestRedirects('c2', '/c/c1/') self.assertTrue(self.client.login(username='******')) self._assertContestVisible('c2')
def test_mailsubmit_permissions(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.participants.tests.ParticipantsContestController' contest.save() problem_instance = ProblemInstance.objects.get() problem_instance.submissions_limit = 0 problem_instance.save() round = Round.objects.get() round.start_date = datetime(2012, 7, 31, tzinfo=utc) round.end_date = datetime(2012, 8, 10, tzinfo=utc) round.save() msc = MailSubmissionConfig(contest=contest, enabled=True, start_date=datetime(2012, 8, 12, tzinfo=utc), end_date=datetime(2012, 8, 14, tzinfo=utc)) msc.save() user = User.objects.get(username='******') p = Participant(contest=contest, user=user, status='BANNED') p.save() with fake_time(datetime(2012, 8, 13, 0, 5, tzinfo=utc)): self.client.login(username='******') response = self.submit_file(contest, problem_instance) self.assertEqual(403, response.status_code) self.client.login(username='******') response = self.submit_file(contest, problem_instance) self.assertEqual(403, response.status_code) p.status = 'ACTIVE' p.save() self.assertEqual(MailSubmission.objects.count(), 0) self.client.login(username='******') response = self.submit_file(contest, problem_instance) self.assertEqual(200, response.status_code) self.assertEqual(MailSubmission.objects.count(), 1)
def setUp(self): contest = Contest.objects.get() contest.controller_name = 'oioioi.oi.controllers.OIContestController' contest.save() Participant(contest=contest, user=User.objects.get(username='******')).save()
def test_pupils_site(self): self.assertTrue(self.client.login(username='******')) # teacher user = User.objects.get(username='******') contest = Contest.objects.get(id='c') make_user_contest_admin(user, contest) change_contest_type(contest) self.client.get('/c/c/') url = reverse('show_members', kwargs={'member_type': 'pupil'}) response = self.client.get(url) self.assertContains(response, "Add new group to this contest") self.assertContains(response, "Groups") self.assertContains(response, "Members") self.assertNotContains(response, "Create new group from members below") self.assertContains( response, "You have not added any group to this contest yet.") participant = Participant(contest=contest, user=user) participant.save() url = reverse('show_members', kwargs={'member_type': 'pupil'}) response = self.client.get(url) self.assertContains(response, "Add new group to this contest") self.assertContains(response, "Create new group from members below") self.assertContains( response, "You have not added any group to this contest yet.") group = UserGroup.objects.get(id=1003) group.contests.add(contest) group.save() url = reverse('show_members', kwargs={'member_type': 'pupil'}) response = self.client.get(url) self.assertContains(response, "Add new group to this contest") self.assertContains(response, "Create new group from members below") self.assertContains(response, "teacher group") self.assertContains(response, "Modify group") self.assertContains(response, "Test User 3") self.assertContains(response, "Remove group from this contest") self.assertNotContains( response, "You have not added any group to this contest yet.") with self.modify_settings( INSTALLED_APPS={'remove': 'oioioi.usergroups'}): url = reverse('show_members', kwargs={'member_type': 'pupil'}) response = self.client.get(url) self.assertNotContains(response, "Add new group to this contest") self.assertNotContains(response, "Create new group from members below") self.assertNotContains(response, "Modify groups") self.assertNotContains( response, "You have not added any group to this contest yet.") groups = UserGroup.objects.all() for usergroup in groups: usergroup.delete() url = reverse('show_members', kwargs={'member_type': 'pupil'}) response = self.client.get(url) self.assertNotContains(response, "Add new group to this contest") self.assertContains(response, "Create new group from members below") self.assertNotContains(response, "Remove group from this contest") self.assertNotContains( response, "You have not added any group to this contest yet.") participant.delete() url = reverse('show_members', kwargs={'member_type': 'pupil'}) response = self.client.get(url) self.assertNotContains(response, "Create new group from members below")