From 981dd6dd71ea80e5149c2eff564622e96c12b5be Mon Sep 17 00:00:00 2001 From: Hasan Ramezani Date: Sun, 17 Mar 2019 21:47:21 +0100 Subject: Fixed #28431 -- Added a system check for BinaryField to prevent strings defaults. Thanks Claude Paroz for the initial patch. --- tests/invalid_models_tests/test_ordinary_fields.py | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'tests') diff --git a/tests/invalid_models_tests/test_ordinary_fields.py b/tests/invalid_models_tests/test_ordinary_fields.py index a106ab175a..b1a289c977 100644 --- a/tests/invalid_models_tests/test_ordinary_fields.py +++ b/tests/invalid_models_tests/test_ordinary_fields.py @@ -39,6 +39,33 @@ class AutoFieldTests(SimpleTestCase): ]) +@isolate_apps('invalid_models_tests') +class BinaryFieldTests(SimpleTestCase): + + def test_valid_default_value(self): + class Model(models.Model): + field1 = models.BinaryField(default=b'test') + field2 = models.BinaryField(default=None) + + for field_name in ('field1', 'field2'): + field = Model._meta.get_field(field_name) + self.assertEqual(field.check(), []) + + def test_str_default_value(self): + class Model(models.Model): + field = models.BinaryField(default='test') + + field = Model._meta.get_field('field') + self.assertEqual(field.check(), [ + Error( + "BinaryField's default cannot be a string. Use bytes content " + "instead.", + obj=field, + id='fields.E170', + ), + ]) + + @isolate_apps('invalid_models_tests') class CharFieldTests(SimpleTestCase): -- cgit v1.3