diff options
| author | Adam Johnson <me@adamj.eu> | 2020-01-30 09:28:32 +0000 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-01-13 13:50:20 +0100 |
| commit | 45a42aabfa1a86d1806bec93b31ef6ed7ccd51a7 (patch) | |
| tree | 06aa1a1d8f51da669a248d323ea3ef25e31507d1 /tests | |
| parent | c920387faba8da2f65fca49d191b6a93a9becdba (diff) | |
Fixed #29708 -- Deprecated PickleSerializer.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/defer_regress/tests.py | 4 | ||||
| -rw-r--r-- | tests/serializers/tests.py | 13 | ||||
| -rw-r--r-- | tests/sessions_tests/tests.py | 10 |
3 files changed, 19 insertions, 8 deletions
diff --git a/tests/defer_regress/tests.py b/tests/defer_regress/tests.py index ccd6556c80..300524a151 100644 --- a/tests/defer_regress/tests.py +++ b/tests/defer_regress/tests.py @@ -4,7 +4,8 @@ from django.contrib.contenttypes.models import ContentType from django.contrib.sessions.backends.db import SessionStore from django.db import models from django.db.models import Count -from django.test import TestCase, override_settings +from django.test import TestCase, ignore_warnings, override_settings +from django.utils.deprecation import RemovedInDjango50Warning from .models import ( Base, Child, Derived, Feature, Item, ItemAndSimpleItem, Leaf, Location, @@ -91,6 +92,7 @@ class DeferRegressionTest(TestCase): list(SimpleItem.objects.annotate(Count('feature')).only('name')), list) + @ignore_warnings(category=RemovedInDjango50Warning) @override_settings(SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer') def test_ticket_12163(self): # Test for #12163 - Pickling error saving session with unsaved model diff --git a/tests/serializers/tests.py b/tests/serializers/tests.py index 4bd6acd982..1b375a4a1e 100644 --- a/tests/serializers/tests.py +++ b/tests/serializers/tests.py @@ -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=()): """ diff --git a/tests/sessions_tests/tests.py b/tests/sessions_tests/tests.py index 816777bc97..367c40fcc3 100644 --- a/tests/sessions_tests/tests.py +++ b/tests/sessions_tests/tests.py @@ -7,6 +7,7 @@ import unittest from datetime import timedelta from http import cookies from pathlib import Path +from unittest import mock from django.conf import settings from django.contrib.sessions.backends.base import UpdateError @@ -24,9 +25,7 @@ from django.contrib.sessions.exceptions import ( ) from django.contrib.sessions.middleware import SessionMiddleware from django.contrib.sessions.models import Session -from django.contrib.sessions.serializers import ( - JSONSerializer, PickleSerializer, -) +from django.contrib.sessions.serializers import JSONSerializer from django.core import management from django.core.cache import caches from django.core.cache.backends.base import InvalidCacheBackendError @@ -880,9 +879,8 @@ class CookieSessionTests(SessionTestsMixin, SimpleTestCase): # by creating a new session self.assertEqual(self.session.serializer, JSONSerializer) self.session.save() - - self.session.serializer = PickleSerializer - self.session.load() + with mock.patch('django.core.signing.loads', side_effect=ValueError): + self.session.load() @unittest.skip("Cookie backend doesn't have an external store to create records in.") def test_session_load_does_not_create_record(self): |
