Example #1
0
    def setUp(self):
        self.password = "******"
        self.peon = UserFactory(password=self.password)
        self.deleter = UserFactory(password=self.password)
        self.deleter.groups.add(self.change_group)

        self.changeset = ChangesetFactory()
        self.url = reverse('delete_changeset',
                           kwargs={'pk': self.changeset.pk})
Example #2
0
 def setUp(self):
     self.password = "******"
     self.peon = UserFactory(password=self.password)
     self.changer = UserFactory(password=self.password)
     self.changer.groups.add(self.change_group)
     self.approver = UserFactory(password=self.password)
     self.approver.groups.add(self.approve_group)
     self.queuer = UserFactory(password=self.password)
     self.queuer.groups.add(self.queue_group)
     self.deleter = UserFactory(password=self.password)
     self.deleter.groups.add(self.change_group)
Example #3
0
    def setUp(self):
        self.password = "******"
        self.peon = UserFactory(password=self.password)
        self.changer = UserFactory(password=self.password)
        self.changer.groups.add(self.change_group)
        self.approver = UserFactory(password=self.password)
        self.approver.groups.add(self.approve_group)
        self.queuer = UserFactory(password=self.password)
        self.queuer.groups.add(self.queue_group)

        self.changeset = ChangesetFactory()
        self.url = reverse('approve_changeset',
                           kwargs={'pk': self.changeset.pk})
        self.read_url = reverse('read_changeset', args=[self.changeset.pk])
Example #4
0
 def setUp(self):
     super(ViewsEmptyTestCase, self).setUp()
     user = UserFactory(password='******')
     user.is_superuser = True
     user.save()
     self.assertTrue(
         self.client.login(username=user.username, password='******'))
Example #5
0
    def setUp(self):
        self.election = ElectionFactory()

        self.center = RegistrationCenterFactory(name=generate_arabic_place_name())
        self.office_id = self.center.office.id

        # Create a bunch of voters registered at each of these centers. The number of voters
        # matters somewhat.
        # station_distributor() will create a unisex station under certain conditions if
        # there are < N male or female voters, where N = UNISEX_TRIGGER (currently 25). The
        # names of the generated PDFs (which this code tests) have the gender embedded, so if I
        # change the # of voters and that causes a unisex station to be created, the filenames of
        # the generated PDFs will be different than these tests expect so the tests will fail.
        # I use a number of voters that guarantees I won't create a unisex station.
        n_voters = (settings.ROLLGEN_UNISEX_TRIGGER * 2) + 2

        self.voters = create_voters(n_voters, center=self.center)

        self.password = '******'
        self.user = UserFactory(password=self.password)

        # Each test gets a fresh work dir.
        self.output_path = tempfile.mkdtemp()
        self.input_arguments = INPUT_ARGUMENTS_TEMPLATE.copy()
        self.input_arguments['center_ids'] = [self.center.center_id]
Example #6
0
    def test_approval_warning_checkbox(self):
        # If the changeset has approvals, we include the approval warning checkbox
        # If not, we don't.

        # New changeset
        form = ChangesetForm(data=self.data, request=MagicMock())
        self.assertNotIn('okay_to_remove_approvals', form.fields)

        # Existing changeset without approvals
        changeset = ChangesetFactory()
        form = ChangesetForm(instance=changeset, data=self.data, request=MagicMock())
        self.assertNotIn('okay_to_remove_approvals', form.fields)

        # Approvals
        self.approver = UserFactory()
        self.approver.user_permissions.add(
            get_permission_object_by_name(APPROVE_CHANGESET_PERMISSION))
        changeset.approve(self.approver)
        form = ChangesetForm(instance=changeset, data=self.data, request=MagicMock())
        self.assertIn('okay_to_remove_approvals', form.fields)

        # And we must check it
        self.assertFalse(form.is_valid())
        self.assertIn('okay_to_remove_approvals', form.errors)

        # If we save, it removes the approvals
        self.data['okay_to_remove_approvals'] = True
        mock_request = MagicMock()
        mock_request.__class__ = HttpRequest
        form = ChangesetForm(instance=changeset, data=self.data, request=mock_request)
        self.assertTrue(form.is_valid(), form.errors)
        changeset = form.save()
        self.assertEqual(0, changeset.number_of_approvals)
Example #7
0
    def setUp(self):
        super(ViewsFailedJobTestCase, self).setUp()
        self.user = UserFactory(password='******')
        self.user.is_superuser = True
        self.user.save()
        self.assertTrue(
            self.client.login(username=self.user.username,
                              password='******'))

        # Generate a center with no voters to force an error when the job runs.
        self.no_voters_center = RegistrationCenterFactory(
            name=generate_arabic_place_name())

        phase = 'in-person'

        self.input_arguments['phase'] = phase
        self.input_arguments['center_ids'] = [self.no_voters_center.center_id]

        with override_settings(ROLLGEN_OUTPUT_DIR=self.faux_output_dir):
            self.job = Job(phase, [self.no_voters_center],
                           self.input_arguments, self.user.username,
                           self.output_path)
            try:
                self.job.generate_rolls()
            except NoVotersError as exception:
                # This is expected. (In fact, it's the whole point of the test.)
                handle_job_exception(exception, self.job.output_path)

        self.dirname = os.path.basename(self.job.output_path)
Example #8
0
 def create_staff_user(self):
     user = UserFactory(username=self.username,
                        email=self.email,
                        password=self.password)
     user.is_staff = True
     user.save()
     return user
Example #9
0
 def setUp(self):
     self.home_url = reverse('upload_broadcast')
     self.staff_user = UserFactory(username='******', password='******')
     self.staff_user.is_staff = True
     self.staff_user.save()
     self.staff_user.user_permissions.add(Permission.objects.get(codename='add_broadcast'))
     self.staff_user.user_permissions.add(Permission.objects.get(codename='approve_broadcast'))
     self.client.login(username='******', password='******')
Example #10
0
 def test_revoke_approval_updates_status(self):
     changeset = ChangesetFactory()
     user = give_approve_permission(self.user)
     user2 = give_approve_permission(UserFactory())
     changeset.approve(user)
     changeset.approve(user2)
     changeset = refresh_model(changeset)
     self.assertEqual(Changeset.STATUS_APPROVED, changeset.status)
     changeset.revoke_approval(user)
     self.assertEqual(Changeset.STATUS_NEW, changeset.status)
Example #11
0
 def setUp(self):
     self.url = reverse('check_registration')
     self.user = UserFactory(username='******', password='******')
     self.client.login(username='******', password='******')
     # captcha has 2 form fields, _0 is a key, _1 is the text entered by the user
     self.captcha = {'captcha_0': 'dummy', 'captcha_1': 'PASSED'}
     self.registration = RegistrationPeriodFactory(start_time=PAST_DAY,
                                                   end_time=PAST_DAY)
     self.election = ElectionFactory(polling_start_time=FUTURE_DAY,
                                     polling_end_time=FUTURE_DAY)
Example #12
0
 def setUp(self):
     self.password = '******'
     self.user = UserFactory(username='******', password=self.password)
     self.user.is_staff = True
     self.user.save()
     self.assertTrue(
         self.client.login(username=self.user.username,
                           password=self.password))
     self.staff_url = reverse('staff')
     self.httptester_url = reverse('httptester-index')
Example #13
0
 def test_create_changeset(self):
     # We can create a changeset
     mock_request = MagicMock(user=UserFactory())
     form = ChangesetForm(data=self.data, request=mock_request)
     self.assertTrue(form.is_valid(), msg=str(form.errors))
     changeset = form.save()
     changeset = refresh_model(changeset)
     self.assertEqual(Changeset.CHANGE_CENTER, changeset.change)
     self.assertEqual(Changeset.SELECT_CENTERS, changeset.how_to_select)
     self.assertIn(self.center1, changeset.selected_centers.all())
     self.assertIn(self.center2, changeset.selected_centers.all())
Example #14
0
 def test_number_of_approvals(self):
     changeset = ChangesetFactory()
     self.assertEqual(0, changeset.number_of_approvals)
     self.user = give_approve_permission(self.user)
     changeset.approve(self.user)
     self.assertEqual(1, changeset.number_of_approvals)
     user2 = give_approve_permission(UserFactory())
     changeset.approve(user2)
     self.assertEqual(2, changeset.number_of_approvals)
     changeset.revoke_approval(user2)
     self.assertEqual(1, changeset.number_of_approvals)
Example #15
0
 def test_set_password_mismatch(self):
     user = UserFactory(username='******', first_name='Jeff', last_name='Doe',
                        password='******')
     url = reverse('staff_set_password', kwargs={'pk': user.pk})
     data = {
         'new_password1': 'foo',
         'new_password2': 'bar',
     }
     rsp = self.client.post(url, data=data, follow=False)
     self.assertEqual(200, rsp.status_code)
     user = User.objects.get(pk=user.pk)
     self.assertTrue(user.check_password('puppy'))
Example #16
0
 def create_staff_user(self):
     user = UserFactory(username=self.username,
                        email=self.email,
                        password=self.password)
     user.is_staff = True
     user.save()
     if self.model:
         content_type = ContentType.objects.get_for_model(self.model)
         for perm in self.permissions:
             user.user_permissions.add(
                 Permission.objects.get(content_type=content_type,
                                        codename=perm))
     return user
Example #17
0
    def test_cannot_revoke_approval_after_queueing(self):
        superuser = UserFactory(is_superuser=True, password=self.password)
        self.changeset.approve(self.approver)
        self.changeset.approve(superuser)
        self.changeset.status = Changeset.STATUS_QUEUED
        self.changeset.save()

        self.login(superuser)
        rsp = self.client.post(self.url, data={'revoke': True})

        self.assertContains(rsp,
                            "after the changeset has been started.",
                            status_code=BAD_REQUEST)
Example #18
0
 def test_access(self):
     UserFactory(username='******', password='******')
     for m in models:
         instance = m()
         urls = instance.get_urls()
         for url in urls:
             try:
                 path = reverse(url.name)
             except NoReverseMatch:
                 path = reverse(url.name, args=[1])
             self.client.login(username='******', password='******')
             self.assertForbidden(self.client.get(path))
             self.client.logout()
             self.assertRedirectsToLogin(self.client.get(path))
Example #19
0
 def setUp(self):
     self.number = 397
     self.msg = MessageText.objects.create(
         number=self.number,
         msg_en="Message",
         msg_ar="Message (ar)",
         enhanced_en="Enh msg",
         enhanced_ar="Enh msg (ar)",
     )
     self.staff_user = UserFactory(username='******', password='******')
     self.perm = Permission.objects.get(codename='change_messagetext')
     self.staff_user.user_permissions.add(self.perm)
     assert self.client.login(username='******', password='******')
     self.list_url = reverse('message_list')
     self.change_url = reverse('message_update', args=[self.msg.pk])
Example #20
0
 def test_upload_file(self):
     # We can successfully upload a file of NIDs and look up the citizens
     # and blank lines are okay
     data = self.data
     data['how_to_select'] = str(Changeset.SELECT_UPLOADED_NIDS)
     citizen1 = CitizenFactory()
     citizen2 = CitizenFactory()
     filetext = "{nid1}\n\n{nid2}\n".format(nid1=citizen1.national_id, nid2=citizen2.national_id)
     upload_file = SimpleUploadedFile('my_filename', filetext)
     mock_request = MagicMock(user=UserFactory())
     form = ChangesetForm(data=data, files={'upload_file': upload_file}, request=mock_request)
     self.assertTrue(form.is_valid(), msg=str(form.errors))
     changeset = form.save()
     self.assertIn(citizen1, changeset.selected_citizens.all())
     self.assertIn(citizen2, changeset.selected_citizens.all())
Example #21
0
    def setUp(self):
        super(ViewsInProgressJobTestCase, self).setUp()
        self.user = UserFactory(password='******')
        self.user.is_superuser = True
        self.user.save()
        self.assertTrue(
            self.client.login(username=self.user.username,
                              password='******'))

        # I would like to create an in-progress job "organically", but that's hard to do under
        # test conditions. Instead I simulate the conditions of in-progress job.
        with open(os.path.join(self.output_path, ROLLGEN_FLAG_FILENAME),
                  'w') as f:
            f.write(' ')

        self.dirname = os.path.basename(self.output_path)
Example #22
0
 def test_staff_update(self):
     group = Group.objects.get(name=HELP_DESK_SUPERVISORS_GROUP)
     user = UserFactory(username='******', first_name='Jeff', last_name='Doe',
                        password='******')
     url = reverse('staff_update', kwargs={'pk': user.pk})
     data = {
         'username': '******',
         'first_name': 'Fred',
         'last_name': 'Boggs',
         'email': '*****@*****.**',
         'help_desk_group': group.name,
     }
     self.client.post(url, data=data)
     user = User.objects.get(username='******')
     self.assertEqual(user.last_name, 'Boggs')
     self.assertTrue(user.check_password('puppy'))
     self.assertIn(group, user.groups.all())
     self.assertEqual(1, user.groups.count())
Example #23
0
    def setUp(self):
        super(ViewsNonEmptyTestCase, self).setUp()
        user = UserFactory(password='******')
        user.is_superuser = True
        user.save()
        self.assertTrue(
            self.client.login(username=user.username, password='******'))

        phase = 'in-person'

        self.input_arguments['phase'] = phase

        with override_settings(ROLLGEN_OUTPUT_DIR=self.faux_output_dir):
            self.job = Job(phase, [self.center], self.input_arguments,
                           self.user.username, self.output_path)
            self.job.generate_rolls()

        self.dirname = os.path.basename(self.job.output_path)
Example #24
0
    def setUp(self):
        self.staff_user = UserFactory()
        self.staff_user.is_staff = True
        self.staff_user.save()

        assert self.client.login(username=self.staff_user.username,
                                 password=DEFAULT_USER_PASSWORD)

        self.bad_center_id = 'abcd'
        self.bad_phone_number = 'abcd'

        self.good_center_id = RegistrationCenterFactory().center_id
        self.good_looking_center_id = self.good_center_id + 1  # until the next center is created
        self.assertFalse(
            RegistrationCenter.objects.filter(
                center_id=self.good_looking_center_id).exists())

        # these will both get whitelisted by this test class
        self.good_phone_number_1 = 218000000106
        self.good_phone_number_2 = 218000000107
Example #25
0
 def setUp(self):
     self.user = UserFactory()
Example #26
0
    def setUp(self):
        self.staff_user = UserFactory()
        self.staff_user.is_staff = True
        self.staff_user.save()
        assert self.client.login(username=self.staff_user.username,
                                 password=DEFAULT_USER_PASSWORD)
        self.reporting_user = test_reports.TEST_USERNAME
        self.reporting_password = test_reports.TEST_PASSWORD
        REPORT_USER_DB[self.reporting_user] = self.reporting_password
        # Pick a start time that represents different days in Libya vs UTC
        tz = timezone(settings.TIME_ZONE)
        polling_start_time = astz(FUTURE_DAY.replace(hour=22), tz)
        polling_end_time = tz.normalize(polling_start_time +
                                        timedelta(hours=16))
        self.election = ElectionFactory(
            polling_start_time=polling_start_time,
            polling_end_time=polling_end_time,
        )
        self.election_day_dt = self.election.polling_start_time
        # Create "decoy" election just to confirm that it doesn't break reports.
        decoy_start_time = tz.normalize(polling_start_time -
                                        timedelta(days=10))
        decoy_end_time = tz.normalize(decoy_start_time + timedelta(hours=16))
        ElectionFactory(
            polling_start_time=decoy_start_time,
            polling_end_time=decoy_end_time,
        )
        self.all_centers = []
        self.rc_1 = RegistrationCenterFactory()
        self.all_centers.append(self.rc_1)
        self.rc_2 = RegistrationCenterFactory()
        self.all_centers.append(self.rc_2)
        self.rc_3 = RegistrationCenterFactory()
        self.all_centers.append(self.rc_3)
        self.rc_4 = RegistrationCenterFactory()
        self.all_centers.append(self.rc_4)
        self.copy_of_rc_1 = RegistrationCenterFactory(copy_of=self.rc_1,
                                                      office=self.rc_1.office)
        self.all_centers.append(self.copy_of_rc_1)
        # rc_5 is inactive for this election
        self.rc_5 = RegistrationCenterFactory(office=self.rc_1.office)
        self.all_centers.append(self.rc_5)
        inactive_on_election = CenterClosedForElection(
            registration_center=self.rc_5, election=self.election)
        inactive_on_election.full_clean()
        inactive_on_election.save()
        self.all_office_ids = [center.office_id for center in self.all_centers]
        self.carrier_1 = BackendFactory()
        self.citizen_1 = CitizenFactory()

        # Create registrations on the 4 days leading up to election day
        # Put the registrations at different hours of the day to stress TZ handling.
        self.registration_dates = []
        self.registration_date_strs = []
        hour_of_day = 0
        for delta_days in range(10, 4, -1):
            assert hour_of_day < 24
            reg_date = astz(self.election_day_dt - timedelta(days=delta_days), tz)\
                .replace(hour=hour_of_day)
            hour_of_day += 4
            self.registration_dates.append(reg_date)
            self.registration_date_strs.append(reg_date.strftime('%Y-%m-%d'))
        self.yesterday_date, _ = calc_yesterday(self.registration_date_strs)
        self.yesterday_date_dm = self.yesterday_date.strftime('%d/%m')
        # yesterday_date is a date; get a datetime form
        self.yesterday_date_dt = tz.localize(
            datetime(self.yesterday_date.year, self.yesterday_date.month,
                     self.yesterday_date.day, 0, 0, 0))
        self.staff_phone_number = STAFF_PHONE_NUMBER_PATTERN % 12345
Example #27
0
 def setUp(self):
     self.password = "******"
     user = UserFactory(password=self.password)
     user.groups.add(self.change_group)
     assert self.client.login(username=user.username,
                              password=self.password)
Example #28
0
 def setUp(self):
     super(GroupMembershipNegativeTestCase, self).setUp()
     password = '******'
     self.user = UserFactory(password=password)
     self.assertTrue(
         self.client.login(username=self.user.username, password=password))
Example #29
0
 def test_nonstaff_cant_see_form(self):
     self.client.logout()
     self.nonstaff_user = UserFactory(username='******', password='******')
     self.client.login(username='******', password='******')
     self.assertForbidden(self.client.get(self.url))
Example #30
0
 def test_get_home_view_not_staff(self):
     # get view not_staff -> 403
     self.client.logout()
     self.user = UserFactory(username='******', password='******')
     self.client.login(username='******', password='******')
     self.assertForbidden(self.client.get(self.home_url))