From 37b55ef4d5d41916f7c9dfb2d81b55003739606d Mon Sep 17 00:00:00 2001 From: James Cooke Date: Thu, 9 Jan 2020 21:34:34 +0000 Subject: [PATCH] Add regression test for OverflowError in unique validation --- tests/test_model_serializer.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index fbb562792..54eebd9d3 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -12,7 +12,7 @@ from collections import OrderedDict import django import pytest -from django.core.exceptions import ImproperlyConfigured +from django.core.exceptions import ImproperlyConfigured, ValidationError from django.core.serializers.json import DjangoJSONEncoder from django.core.validators import ( MaxValueValidator, MinLengthValidator, MinValueValidator @@ -1305,3 +1305,33 @@ class Issue6751Test(TestCase): serializer.save() self.assertEqual(instance.char_field, 'value changed by signal') + + +class OverflowModel(models.Model): + value = models.IntegerField(unique=True, validators=[ + MaxValueValidator(9223372036854775807), + ]) + + +class Issue7314Test(TestCase): + + def test_model(self): + """ + Assert that Django can validate the overflow model. + """ + with self.assertRaises(ValidationError): + OverflowModel(value=9223372036854775808).full_clean() + + def test_serializer(self): + class TestSerializer(serializers.ModelSerializer): + class Meta: + model = OverflowModel + fields = '__all__' + + def validate_value(self, value): + assert False + + serializer = TestSerializer(data={'value': 9223372036854775808}) + + with self.assertRaises(serializers.ValidationError): + serializer.is_valid(raise_exception=True)