Example #1
0
 def test_is_eligible_blocked(self):
     # Blocked citizen is not eligible
     TODAY = datetime.datetime(2000, 6, 2)
     citizen = CitizenFactory(birth_date=datetime.date(1982, 6, 1))
     self.assertTrue(citizen.is_eligible(as_of=TODAY))
     citizen.block()
     citizen.save()
     self.assertFalse(citizen.is_eligible(as_of=TODAY))
Example #2
0
class ResponseTest(TranslationTest, LibyaRapidTest):
    # Test response messages (Arabic)

    def setUp(self):
        self.number = "919-999-9999"
        self.center = RegistrationCenterFactory()
        self.conn = self.create_connection(data={'identity': self.number})
        self.citizen = CitizenFactory()
        self.good_nid = self.citizen.national_id
        self.bad_nid = get_random_number_string(length=constants.NID_LENGTH)
        self.short_nid = get_random_number_string(length=constants.NID_LENGTH - 1)
        self.good_center_id = self.center.center_id
        self.bad_center_id = get_random_number_string(length=constants.CENTER_ID_LENGTH)
        self.long_center_id = get_random_number_string(length=constants.CENTER_ID_LENGTH + 1)
        self.fields = {'to_addr': settings.REGISTRATION_SHORT_CODE}
        RegistrationPeriodFactory(start_time=PAST_DAY, end_time=FUTURE_DAY)

    def test_garbage(self, registration_open):
        self.receive("PING", self.conn, fields=self.fields)
        expected = self.translate(constants.MESSAGE_INCORRECT)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_garbage_enhanced(self, registration_open):
        for i in range(1, 5):
            # last iteration should get an enhanced message
            self.receive("PING", self.conn, fields=self.fields)
        expected = self.translate(constants.MESSAGE_INCORRECT, enhanced=True)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_wrong_length_nid(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.short_nid, center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.RESPONSE_NID_WRONG_LENGTH)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_wrong_length_nid_enhanced(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.short_nid, center=self.good_center_id)
        for i in range(1, 5):
            # last iteration should get an enhanced message
            self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.RESPONSE_NID_WRONG_LENGTH, enhanced=True)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_wrong_length_center_id(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.good_nid, center=self.long_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.RESPONSE_CENTER_ID_WRONG_LENGTH)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_wrong_length_center_id_enhanced(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.good_nid, center=self.long_center_id)
        for i in range(1, 5):
            # last iteration should get an enhanced message
            self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.RESPONSE_CENTER_ID_WRONG_LENGTH, enhanced=True)
        self.assertEqual(self.get_last_response_message(), expected)

    def test_wrong_length_nid_query(self, registration_open):
        msg = "{nid}".format(nid=self.short_nid)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.VOTER_QUERY_NID_WRONG_LENGTH)
        self.assertEqual(self.get_last_response_message(), expected)

    def test_citizen_under_18(self, registration_open):
        self.citizen.birth_date = datetime.datetime.today()
        self.citizen.save()
        msg = "{nid}#{center}".format(nid=self.good_nid, center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.RESPONSE_NID_INVALID)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_center_does_not_exist(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.good_nid, center=self.bad_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.RESPONSE_CENTER_ID_INVALID)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_nid_does_not_exist(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.bad_nid, center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.RESPONSE_NID_INVALID)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_good_registration(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.good_nid, center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        context = {'person': unicode(self.citizen), 'centre': self.center.name,
                   'code': self.center.center_id}
        expected = self.translate(constants.MESSAGE_1, context=context)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_good_registration_enhanced(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.good_nid, center=self.good_center_id)
        for i in range(1, 5):
            # last iteration should get an enhanced message
            self.receive(msg, self.conn, fields=self.fields)
        context = {'person': unicode(self.citizen), 'centre': self.center.name,
                   'code': self.center.center_id}
        expected = self.translate(constants.MESSAGE_1, context=context, enhanced=True)  # arabic
        self.assertEqual(self.get_last_response_code(), constants.MESSAGE_1)
        self.assertEqual(self.get_last_response_message(), expected)

    def test_good_update(self, registration_open):
        new_center = RegistrationCenterFactory()
        msg = "{nid}#{center}".format(nid=self.good_nid, center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)  # registers
        msg = "{nid}#{center}".format(nid=self.good_nid, center=new_center.center_id)
        self.receive(msg, self.conn, fields=self.fields)  # updates
        context = {'person': unicode(self.citizen), 'centre': new_center.name,
                   'code': new_center.center_id}
        # 1st update - message 1
        expected = self.translate(constants.MESSAGE_1, context=context)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

        # 2nd update - message 4
        msg = "{nid}#{center}".format(nid=self.good_nid, center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)  # updates again
        context = {'person': unicode(self.citizen), 'centre': new_center.name,
                   'code': self.good_center_id}
        expected = self.translate(constants.MESSAGE_4, context=context)  # arabic

        # 3rd and final update - message 5
        msg = "{nid}#{center}".format(nid=self.good_nid, center=new_center.center_id)
        self.receive(msg, self.conn, fields=self.fields)  # updates
        context = {'person': unicode(self.citizen), 'centre': new_center.name,
                   'code': new_center.center_id}
        expected = self.translate(constants.MESSAGE_5, context=context)  # arabic

    def test_attempt_update_wrong_from_number(self, registration_open):
        # create a valid registration
        sms = SMSFactory(from_number=self.number, citizen=self.citizen)
        RegistrationFactory(
            citizen=self.citizen,
            registration_center=self.center,
            archive_time=None,
            sms=sms)
        # try to register at a new center with a new number
        new_center = RegistrationCenterFactory()
        new_number = '919-888-8888'
        msg = "{nid}#{center}".format(nid=self.good_nid, center=new_center.center_id)
        new_conn = self.create_connection(data={'identity': new_number})
        self.receive(msg, new_conn, fields=self.fields)
        # message should have the existing number in it (not new_number)
        context = {'centre': self.center.name,
                   'number': self.number[-4:]}
        expected = self.translate(constants.MESSAGE_2, context=context)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_attempt_update_wrong_from_number_same_center(self, registration_open):
        # create a valid registration
        sms = SMSFactory(from_number=self.number, citizen=self.citizen)
        RegistrationFactory(
            citizen=self.citizen,
            registration_center=self.center,
            archive_time=None,
            sms=sms)
        # try to register at same center with a new number
        new_number = '919-888-8888'
        msg = "{nid}#{center}".format(nid=self.good_nid, center=self.center.center_id)
        new_conn = self.create_connection(data={'identity': new_number})
        self.receive(msg, new_conn, fields=self.fields)
        # message should have the existing number in it (not new_number)
        context = {'centre': self.center.name,
                   'number': self.number[-4:]}
        expected = self.translate(constants.MESSAGE_2, context=context)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)
class ResponseTest(TranslationTest, LibyaRapidTest):
    # Test response messages (Arabic)

    def setUp(self):
        self.number = "919-999-9999"
        self.center = RegistrationCenterFactory()
        self.conn = self.create_connection(data={'identity': self.number})
        self.citizen = CitizenFactory()
        self.good_nid = self.citizen.national_id
        self.bad_nid = get_random_number_string(length=constants.NID_LENGTH)
        self.short_nid = get_random_number_string(length=constants.NID_LENGTH -
                                                  1)
        self.good_center_id = self.center.center_id
        self.bad_center_id = get_random_number_string(
            length=constants.CENTER_ID_LENGTH)
        self.long_center_id = get_random_number_string(
            length=constants.CENTER_ID_LENGTH + 1)
        self.fields = {'to_addr': settings.REGISTRATION_SHORT_CODE}
        RegistrationPeriodFactory(start_time=PAST_DAY, end_time=FUTURE_DAY)

    def test_garbage(self, registration_open):
        self.receive("PING", self.conn, fields=self.fields)
        expected = self.translate(constants.MESSAGE_INCORRECT)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_garbage_enhanced(self, registration_open):
        for i in range(1, 5):
            # last iteration should get an enhanced message
            self.receive("PING", self.conn, fields=self.fields)
        expected = self.translate(constants.MESSAGE_INCORRECT,
                                  enhanced=True)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_wrong_length_nid(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.short_nid,
                                      center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(
            constants.RESPONSE_NID_WRONG_LENGTH)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_wrong_length_nid_enhanced(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.short_nid,
                                      center=self.good_center_id)
        for i in range(1, 5):
            # last iteration should get an enhanced message
            self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.RESPONSE_NID_WRONG_LENGTH,
                                  enhanced=True)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_wrong_length_center_id(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=self.long_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(
            constants.RESPONSE_CENTER_ID_WRONG_LENGTH)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_wrong_length_center_id_enhanced(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=self.long_center_id)
        for i in range(1, 5):
            # last iteration should get an enhanced message
            self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.RESPONSE_CENTER_ID_WRONG_LENGTH,
                                  enhanced=True)
        self.assertEqual(self.get_last_response_message(), expected)

    def test_wrong_length_nid_query(self, registration_open):
        msg = "{nid}".format(nid=self.short_nid)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.VOTER_QUERY_NID_WRONG_LENGTH)
        self.assertEqual(self.get_last_response_message(), expected)

    def test_citizen_under_18(self, registration_open):
        self.citizen.birth_date = datetime.datetime.today()
        self.citizen.save()
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.RESPONSE_NID_INVALID)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_center_does_not_exist(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=self.bad_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(
            constants.RESPONSE_CENTER_ID_INVALID)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_nid_does_not_exist(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.bad_nid,
                                      center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        expected = self.translate(constants.RESPONSE_NID_INVALID)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_good_registration(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)
        context = {
            'person': unicode(self.citizen),
            'centre': self.center.name,
            'code': self.center.center_id
        }
        expected = self.translate(constants.MESSAGE_1,
                                  context=context)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_good_registration_enhanced(self, registration_open):
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=self.good_center_id)
        for i in range(1, 5):
            # last iteration should get an enhanced message
            self.receive(msg, self.conn, fields=self.fields)
        context = {
            'person': unicode(self.citizen),
            'centre': self.center.name,
            'code': self.center.center_id
        }
        expected = self.translate(constants.MESSAGE_1,
                                  context=context,
                                  enhanced=True)  # arabic
        self.assertEqual(self.get_last_response_code(), constants.MESSAGE_1)
        self.assertEqual(self.get_last_response_message(), expected)

    def test_good_update(self, registration_open):
        new_center = RegistrationCenterFactory()
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)  # registers
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=new_center.center_id)
        self.receive(msg, self.conn, fields=self.fields)  # updates
        context = {
            'person': unicode(self.citizen),
            'centre': new_center.name,
            'code': new_center.center_id
        }
        # 1st update - message 1
        expected = self.translate(constants.MESSAGE_1,
                                  context=context)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

        # 2nd update - message 4
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=self.good_center_id)
        self.receive(msg, self.conn, fields=self.fields)  # updates again
        context = {
            'person': unicode(self.citizen),
            'centre': new_center.name,
            'code': self.good_center_id
        }
        expected = self.translate(constants.MESSAGE_4,
                                  context=context)  # arabic

        # 3rd and final update - message 5
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=new_center.center_id)
        self.receive(msg, self.conn, fields=self.fields)  # updates
        context = {
            'person': unicode(self.citizen),
            'centre': new_center.name,
            'code': new_center.center_id
        }
        expected = self.translate(constants.MESSAGE_5,
                                  context=context)  # arabic

    def test_attempt_update_wrong_from_number(self, registration_open):
        # create a valid registration
        sms = SMSFactory(from_number=self.number, citizen=self.citizen)
        RegistrationFactory(citizen=self.citizen,
                            registration_center=self.center,
                            archive_time=None,
                            sms=sms)
        # try to register at a new center with a new number
        new_center = RegistrationCenterFactory()
        new_number = '919-888-8888'
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=new_center.center_id)
        new_conn = self.create_connection(data={'identity': new_number})
        self.receive(msg, new_conn, fields=self.fields)
        # message should have the existing number in it (not new_number)
        context = {'centre': self.center.name, 'number': self.number[-4:]}
        expected = self.translate(constants.MESSAGE_2,
                                  context=context)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)

    def test_attempt_update_wrong_from_number_same_center(
            self, registration_open):
        # create a valid registration
        sms = SMSFactory(from_number=self.number, citizen=self.citizen)
        RegistrationFactory(citizen=self.citizen,
                            registration_center=self.center,
                            archive_time=None,
                            sms=sms)
        # try to register at same center with a new number
        new_number = '919-888-8888'
        msg = "{nid}#{center}".format(nid=self.good_nid,
                                      center=self.center.center_id)
        new_conn = self.create_connection(data={'identity': new_number})
        self.receive(msg, new_conn, fields=self.fields)
        # message should have the existing number in it (not new_number)
        context = {'centre': self.center.name, 'number': self.number[-4:]}
        expected = self.translate(constants.MESSAGE_2,
                                  context=context)  # arabic
        self.assertEqual(self.get_last_response_message(), expected)