def test_include_countries(self): """ Test the IBAN model and form include_countries feature. """ include_countries = ('NL', 'BE', 'LU') valid = { 'NL02ABNA0123456789': 'NL02ABNA0123456789', 'BE68539007547034': 'BE68539007547034', 'LU280019400644750000': 'LU280019400644750000' } invalid = { # This IBAN is valid but not for the configured countries. 'GB82WEST12345698765432': ['GB IBANs are not allowed in this field.'] } self.assertFieldOutput( IBANFormField, field_kwargs={'include_countries': include_countries}, valid=valid, invalid=invalid) # Test valid inputs for model field. iban_model_field = IBANField(include_countries=include_countries) for input, output in valid.items(): self.assertEqual(iban_model_field.clean(input, None), output) # Invalid inputs for model field. for input, errors in invalid.items(): with self.assertRaises(ValidationError) as context_manager: iban_model_field.clean(input, None) # The error messages for models are in a different order. errors.reverse() self.assertEqual(context_manager.exception.messages, errors)
def test_include_countries(self): """ Test the IBAN model and form include_countries feature. """ include_countries = ("NL", "BE", "LU") valid = { "NL02ABNA0123456789": "NL02ABNA0123456789", "BE68539007547034": "BE68539007547034", "LU280019400644750000": "LU280019400644750000", } invalid = { # This IBAN is valid but not for the configured countries. "GB82WEST12345698765432": ["GB IBANs are not allowed in this field."] } self.assertFieldOutput( IBANFormField, field_kwargs={"include_countries": include_countries}, valid=valid, invalid=invalid ) # Test valid inputs for model field. iban_model_field = IBANField(include_countries=include_countries) for input, output in valid.items(): self.assertEqual(iban_model_field.clean(input, None), output) # Invalid inputs for model field. for input, errors in invalid.items(): with self.assertRaises(ValidationError) as context_manager: iban_model_field.clean(input, None) # The error messages for models are in a different order. errors.reverse() self.assertEqual(context_manager.exception.messages, errors)
def test_iban_fields(self): """Test the IBAN model and form field.""" valid = { 'NL02ABNA0123456789': 'NL02ABNA0123456789', 'Nl02aBNa0123456789': 'NL02ABNA0123456789', 'NL02 ABNA 0123 4567 89': 'NL02ABNA0123456789', 'NL02-ABNA-0123-4567-89': 'NL02ABNA0123456789', 'NL91ABNA0417164300': 'NL91ABNA0417164300', 'NL91 ABNA 0417 1643 00': 'NL91ABNA0417164300', 'NL91-ABNA-0417-1643-00': 'NL91ABNA0417164300', 'MU17BOMM0101101030300200000MUR': 'MU17BOMM0101101030300200000MUR', 'MU17 BOMM 0101 1010 3030 0200 000M UR': 'MU17BOMM0101101030300200000MUR', 'MU 17BO MM01011010 3030-02 000-00M UR': 'MU17BOMM0101101030300200000MUR', 'BE68539007547034': 'BE68539007547034', 'BE68 5390 0754 7034': 'BE68539007547034', 'BE-685390075470 34': 'BE68539007547034', } invalid = { 'NL02ABNA012345678999': ['NL IBANs must contain 18 characters.'], 'NL02 ABNA 0123 4567 8999': ['NL IBANs must contain 18 characters.'], 'NL91ABNB0417164300': ['Not a valid IBAN.'], 'NL91 ABNB 0417 1643 00': ['Not a valid IBAN.'], 'MU17BOMM0101101030300200000MUR12345': [ 'MU IBANs must contain 30 characters.', 'Ensure this value has at most 34 characters (it has 35).' ], 'MU17 BOMM 0101 1010 3030 0200 000M UR12 345': [ 'MU IBANs must contain 30 characters.', 'Ensure this value has at most 34 characters (it has 35).' ], # This IBAN should only be valid only if the Nordea extensions are turned on. 'EG1100006001880800100014553': ['EG is not a valid country code for IBAN.'], 'EG11 0000 6001 8808 0010 0014 553': ['EG is not a valid country code for IBAN.'] } self.assertFieldOutput(IBANFormField, valid=valid, invalid=invalid) # Test valid inputs for model field. iban_model_field = IBANField() for input, output in valid.items(): self.assertEqual(iban_model_field.clean(input, None), output) self.assertIsNone(iban_model_field.to_python(None)) # Invalid inputs for model field. for input, errors in invalid.items(): with self.assertRaises(ValidationError) as context_manager: iban_model_field.clean(input, None) # The error messages for models are in a different order. errors.reverse() self.assertEqual(context_manager.exception.messages, errors)
def test_iban_fields(self): """Test the IBAN model and form field.""" valid = { 'NL02ABNA0123456789': 'NL02ABNA0123456789', 'Nl02aBNa0123456789': 'NL02ABNA0123456789', 'NL02 ABNA 0123 4567 89': 'NL02ABNA0123456789', 'NL02-ABNA-0123-4567-89': 'NL02ABNA0123456789', 'NL91ABNA0417164300': 'NL91ABNA0417164300', 'NL91 ABNA 0417 1643 00': 'NL91ABNA0417164300', 'NL91-ABNA-0417-1643-00': 'NL91ABNA0417164300', 'MU17BOMM0101101030300200000MUR': 'MU17BOMM0101101030300200000MUR', 'MU17 BOMM 0101 1010 3030 0200 000M UR': 'MU17BOMM0101101030300200000MUR', 'MU 17BO MM01011010 3030-02 000-00M UR': 'MU17BOMM0101101030300200000MUR', 'BE68539007547034': 'BE68539007547034', 'BE68 5390 0754 7034': 'BE68539007547034', 'BE-685390075470 34': 'BE68539007547034', } invalid = { 'NL02ABNA012345678999': ['NL IBANs must contain 18 characters.'], 'NL02 ABNA 0123 4567 8999': ['NL IBANs must contain 18 characters.'], 'NL91ABNB0417164300': ['Not a valid IBAN.'], 'NL91 ABNB 0417 1643 00': ['Not a valid IBAN.'], 'MU17BOMM0101101030300200000MUR12345': [ 'MU IBANs must contain 30 characters.', 'Ensure this value has at most 34 characters (it has 35).'], 'MU17 BOMM 0101 1010 3030 0200 000M UR12 345': [ 'MU IBANs must contain 30 characters.', 'Ensure this value has at most 34 characters (it has 35).'], # This IBAN should only be valid only if the Nordea extensions are turned on. 'EG1100006001880800100014553': ['EG is not a valid country code for IBAN.'], 'EG11 0000 6001 8808 0010 0014 553': ['EG is not a valid country code for IBAN.'] } self.assertFieldOutput(IBANFormField, valid=valid, invalid=invalid) # Test valid inputs for model field. iban_model_field = IBANField() for input, output in valid.items(): self.assertEqual(iban_model_field.clean(input, None), output) self.assertIsNone(iban_model_field.to_python(None)) # Invalid inputs for model field. for input, errors in invalid.items(): with self.assertRaises(ValidationError) as context_manager: iban_model_field.clean(input, None) # The error messages for models are in a different order. errors.reverse() self.assertEqual(context_manager.exception.messages, errors)