Fixed #29708 -- Deprecated PickleSerializer.

This commit is contained in:
Adam Johnson 2020-01-30 09:28:32 +00:00 committed by Mariusz Felisiak
parent c920387fab
commit 45a42aabfa
9 changed files with 48 additions and 26 deletions

View file

@ -10,7 +10,8 @@ from django.core.serializers.base import PickleSerializer, ProgressBar
from django.db import connection, transaction
from django.http import HttpResponse
from django.test import SimpleTestCase, override_settings, skipUnlessDBFeature
from django.test.utils import Approximate
from django.test.utils import Approximate, ignore_warnings
from django.utils.deprecation import RemovedInDjango50Warning
from .models import (
Actor, Article, Author, AuthorProfile, BaseModel, Category, Child,
@ -420,6 +421,7 @@ class SerializersTransactionTestBase:
class PickleSerializerTests(SimpleTestCase):
@ignore_warnings(category=RemovedInDjango50Warning)
def test_serializer_protocol(self):
serializer = PickleSerializer(protocol=3)
self.assertEqual(serializer.protocol, 3)
@ -427,12 +429,21 @@ class PickleSerializerTests(SimpleTestCase):
serializer = PickleSerializer()
self.assertEqual(serializer.protocol, pickle.HIGHEST_PROTOCOL)
@ignore_warnings(category=RemovedInDjango50Warning)
def test_serializer_loads_dumps(self):
serializer = PickleSerializer()
test_data = 'test data'
dump = serializer.dumps(test_data)
self.assertEqual(serializer.loads(dump), test_data)
def test_serializer_warning(self):
msg = (
'PickleSerializer is deprecated due to its security risk. Use '
'JSONSerializer instead.'
)
with self.assertRaisesMessage(RemovedInDjango50Warning, msg):
PickleSerializer()
def register_tests(test_class, method_name, test_func, exclude=()):
"""