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))
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)