コード例 #1
0
    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)
コード例 #2
0
ファイル: tests.py プロジェクト: javdc/prueba-decide
 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()
コード例 #3
0
ファイル: tests.py プロジェクト: javdc/prueba-decide
 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()
コード例 #4
0
    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)
コード例 #5
0
    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
コード例 #6
0
    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
コード例 #7
0
ファイル: tests.py プロジェクト: javdc/prueba-decide
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)