From 1125c438d3b61afe9d87199a24785dad8627f689 Mon Sep 17 00:00:00 2001 From: Victor Cabral Date: Mon, 8 Dec 2014 11:19:36 -0500 Subject: [PATCH 1/2] basic assert to ensure data is there --- rest_framework/serializers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index fb6c826b8..24e94d0c1 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -61,6 +61,7 @@ class BaseSerializer(Field): """ def __init__(self, instance=None, data=None, **kwargs): + assert data is not None self.instance = instance self._initial_data = data self.partial = kwargs.pop('partial', False) From ad8fd989056f8b7125c431f1bf39e56b2065fb3b Mon Sep 17 00:00:00 2001 From: Victor Cabral Date: Mon, 8 Dec 2014 11:39:52 -0500 Subject: [PATCH 2/2] Failed test with assertion fix --- rest_framework/serializers.py | 2 +- tests/test_serializer.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 24e94d0c1..40ace4d77 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -61,7 +61,6 @@ class BaseSerializer(Field): """ def __init__(self, instance=None, data=None, **kwargs): - assert data is not None self.instance = instance self._initial_data = data self.partial = kwargs.pop('partial', False) @@ -150,6 +149,7 @@ class BaseSerializer(Field): return self.instance def is_valid(self, raise_exception=False): + assert self._initial_data is not None assert not hasattr(self, 'restore_object'), ( 'Serializer `%s.%s` has old-style version 2 `.restore_object()` ' 'that is no longer compatible with REST framework 3. ' diff --git a/tests/test_serializer.py b/tests/test_serializer.py index 6dabaf42e..af6a7da43 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -34,6 +34,11 @@ class TestSerializer: serializer = self.Serializer() assert serializer.data == {'char': '', 'integer': None} + def test_empty_serializer_validity(self): + serializer = self.Serializer() + with pytest.raises(AssertionError): + serializer.is_valid() + def test_missing_attribute_during_serialization(self): class MissingAttributes: pass