def test_create_political_party(self): test = [ #We create a correct political party [ 'test name', 'ta', 'test description', 'test headquarters', 'https;//testImage.es', None ], #We try create the same political party [ 'test name', 'ta', 'test description', 'bad', 'https;//testImage.es', IntegrityError ], #We try create the a political party with a bad name [ None, 'ta2', 'test description', 'bad', 'https;//testImage.es', IntegrityError ], #We try create the a political party with a bad acronym [ 'test name', None, 'test description', 'bad', 'https;//testImage.es', IntegrityError ], #We try create the a political party with a bad headquarters [ 'test name', None, 'test description', None, 'https;//testImage.es', IntegrityError ], #We try create the a political party with a bad URL [ 'test name', None, 'test description', None, 'testImage', IntegrityError ] ] for value in test: try: with transaction.atomic(): political_party = PoliticalParty(name=value[0], acronym=value[1], description=value[2], headquarters=value[3], image=value[4]) political_party.save() political_party_DB = PoliticalParty.objects.get( name=value[0]) self.assertEqual(political_party, political_party_DB) if (value[5] != None): self.assertEqual(False, True) except value[5]: self.assertEqual(True, True) except Exception: self.assertEqual(False, True)
def gen_voting(self, pk): voting = Voting(pk=pk, blank_vote=1, name='v1', start_date=timezone.now(), end_date=timezone.now() + datetime.timedelta(days=1)) voting.save() politicalParty = PoliticalParty(name='Test Political Party', voting=voting) politicalParty.save()
def setUp(self): super().setUp() self.voting = Voting( pk=5001, name='voting example', blank_vote=1, start_date=timezone.now(), ) self.voting.save() self.politicalParty = PoliticalParty(name='Test Political Party', voting=self.voting) self.politicalParty.save()
def test_no_political_party_voting_senate(self): u = User(username='******') u.set_password('senator') u.save() q = Question(desc='Choose') q.save() opt = QuestionOption(question=q, option='senator') opt.save() political_party = PoliticalParty(name='Partido Popular', acronym='PP', description='test', headquarters='test') political_party.save() birthdate = date(2000, 2, 28) userProfile = UserProfile(related_political_party=political_party, birthdate=birthdate, sex='F', related_user=u, province='S', employment='S') userProfile.save() v = Voting(name='test voting', question=q, tipe='S', province='S', political_party=political_party) v.save() a, _ = Auth.objects.get_or_create(url=settings.BASEURL, defaults={ 'me': True, 'name': 'test auth' }) a.save() v.auths.add(a) self.assertRaises(ValidationError, v.clean)
def create_voting_senate_primaries(self): u = User(username='******') u.set_password('123') u.save() q = Question(desc='test question') q.save() opt = QuestionOption(question=q, option='senator') opt.save() political_party = PoliticalParty(name='for senator', acronym='test', description='test', headquarters='test') political_party.save() birthdate = date(2000, 2, 28) userProfile = UserProfile(related_political_party=political_party, birthdate=birthdate, sex='F', related_user=u, province='S', employment='B') userProfile.save() v = Voting(name='test voting', question=q, tipe='SP', political_party=political_party) v.save() a, _ = Auth.objects.get_or_create(url=settings.BASEURL, defaults={ 'me': True, 'name': 'test auth' }) a.save() v.auths.add(a) return v
def create_voting(self): v = Voting(name='Elecciones 2020', blank_vote=1) v.save() p = PoliticalParty(name='test politicalParty', voting=v) p.save() i = 1 while i <= 10: # Save 10 presidents opt1 = PartyPresidentCandidate(politicalParty=p, number=str(i), president_candidate="President " + str(i), gender='H', postal_code="41410") opt1.save() i += 1 while i <= 20: # Save 10 congresses opt2 = PartyCongressCandidate(politicalParty=p, number=str(i), congress_candidate="Congress " + str(i), gender='M', postal_code="41410") opt2.save() i += 1 a, _ = Auth.objects.get_or_create(url=settings.BASEURL, defaults={ 'me': True, 'name': 'test auth' }) a.save() v.auths.add(a) res = v return res
class StoreTextCase(BaseTestCase): def setUp(self): super().setUp() self.voting = Voting( pk=5001, name='voting example', blank_vote=1, start_date=timezone.now(), ) self.voting.save() self.politicalParty = PoliticalParty(name='Test Political Party', voting=self.voting) self.politicalParty.save() def tearDown(self): super().tearDown() def gen_voting(self, pk): voting = Voting(pk=pk, blank_vote=1, name='v1', start_date=timezone.now(), end_date=timezone.now() + datetime.timedelta(days=1)) voting.save() politicalParty = PoliticalParty(name='Test Political Party', voting=voting) politicalParty.save() def get_or_create_user(self, pk): user, _ = User.objects.get_or_create(pk=pk) user.username = '******'.format(pk) user.set_password('qwerty') user.save() return user def gen_votes(self): votings = [random.randint(1, 5000) for i in range(10)] users = [random.randint(3, 5002) for i in range(50)] for v in votings: self.gen_voting(v) random_user = random.choice(users) user = self.get_or_create_user(random_user) self.login(user=user.username) census = Census(voting_id=v, voter_id=random_user) census.save() data = {"voting": v, "voter": random_user, "votes": []} for i in range(random.randint(1, 5)): a = random.randint(2, 500) b = random.randint(2, 500) data['votes'].append({'a': a, 'b': b}) response = self.client.post('/store/', data, format='json') print(data) self.assertEqual(response.status_code, 200) self.logout() return votings, users def test_gen_vote_invalid(self): data = {"voting": 1, "voter": 1, "vote": {"a": 1, "b": 1}} response = self.client.post('/store/', data, format='json') self.assertEqual(response.status_code, 401) def test_store_vote(self): VOTING_PK = 345 CTE = [{'a': 96, 'b': 184}, {'a': 33, 'b': 45}] census = Census(voting_id=VOTING_PK, voter_id=1) census.save() self.gen_voting(VOTING_PK) data = {"voting": VOTING_PK, "voter": 1, "votes": CTE} user = self.get_or_create_user(1) self.login(user=user.username) response = self.client.post('/store/', data, format='json') self.assertEqual(response.status_code, 200) self.assertEqual(Vote.objects.count(), 1) self.assertEqual(Vote.objects.first().voting_id, VOTING_PK) self.assertEqual(Vote.objects.first().voter_id, 1) self.assertEqual(Vote.objects.first().ciphers.first().a, CTE[0]['a']) self.assertEqual(Vote.objects.first().ciphers.first().b, CTE[0]['b']) self.assertEqual(Vote.objects.first().ciphers.last().a, CTE[1]['a']) self.assertEqual(Vote.objects.first().ciphers.last().b, CTE[1]['b']) def test_vote(self): self.gen_votes() response = self.client.get('/store/', format='json') self.assertEqual(response.status_code, 401) self.login(user='******') response = self.client.get('/store/', format='json') self.assertEqual(response.status_code, 403) self.login() response = self.client.get('/store/', format='json') self.assertEqual(response.status_code, 200) votes = response.json() self.assertEqual(len(votes), Vote.objects.count()) self.assertEqual(votes[0], VoteSerializer(Vote.objects.all().first()).data) def test_filter(self): votings, voters = self.gen_votes() v = votings[0] response = self.client.get('/store/?voting_id={}'.format(v), format='json') self.assertEqual(response.status_code, 401) self.login(user='******') response = self.client.get('/store/?voting_id={}'.format(v), format='json') self.assertEqual(response.status_code, 403) self.login() response = self.client.get('/store/?voting_id={}'.format(v), format='json') self.assertEqual(response.status_code, 200) votes = response.json() self.assertEqual(len(votes), Vote.objects.filter(voting_id=v).count()) v = voters[0] response = self.client.get('/store/?voter_id={}'.format(v), format='json') self.assertEqual(response.status_code, 200) votes = response.json() self.assertEqual(len(votes), Vote.objects.filter(voter_id=v).count()) def test_hasvote(self): votings, voters = self.gen_votes() vo = Vote.objects.first() v = vo.voting_id u = vo.voter_id response = self.client.get('/store/?voting_id={}&voter_id={}'.format( v, u), format='json') self.assertEqual(response.status_code, 401) self.login(user='******') response = self.client.get('/store/?voting_id={}&voter_id={}'.format( v, u), format='json') self.assertEqual(response.status_code, 403) self.login() response = self.client.get('/store/?voting_id={}&voter_id={}'.format( v, u), format='json') self.assertEqual(response.status_code, 200) votes = response.json() self.assertEqual(len(votes), 1) self.assertEqual(votes[0]["voting_id"], v) self.assertEqual(votes[0]["voter_id"], u) def test_voting_status(self): data = { "voting": 5001, "voter": 1, "votes": [{ 'a': 30, 'b': 55 }, { 'a': 33, 'b': 45 }] } census = Census(voting_id=5001, voter_id=1) census.save() # not opened self.voting.start_date = timezone.now() + datetime.timedelta(days=1) self.voting.save() user = self.get_or_create_user(1) self.login(user=user.username) response = self.client.post('/store/', data, format='json') self.assertEqual(response.status_code, 401) # not closed self.voting.start_date = timezone.now() - datetime.timedelta(days=1) self.voting.save() self.voting.end_date = timezone.now() + datetime.timedelta(days=1) self.voting.save() response = self.client.post('/store/', data, format='json') self.assertEqual(response.status_code, 200) # closed self.voting.end_date = timezone.now() - datetime.timedelta(days=1) self.voting.save() response = self.client.post('/store/', data, format='json') self.assertEqual(response.status_code, 401)