diff options
| author | Jacob Walls <jacobtylerwalls@gmail.com> | 2026-01-07 16:23:48 -0500 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2026-01-12 16:38:32 -0500 |
| commit | 73c5e94521c5b97e27cd2fe2d5b5c2e65f402755 (patch) | |
| tree | 03a799e0dfdac608e9ba5c95c5186bc31d851754 /tests/fixtures | |
| parent | a25158f5cc590f3dff4226c3a48257481e6e67a6 (diff) | |
Refs #36769 -- Raised SuspiciousOperation for unexpected nested tags in XML Deserializer.
Thanks Shai Berger and Natalia Bidart for reviews.
Diffstat (limited to 'tests/fixtures')
| -rw-r--r-- | tests/fixtures/fixtures/invalid_deeply_nested_elements.xml | 1 | ||||
| -rw-r--r-- | tests/fixtures/fixtures/invalid_deeply_nested_elements_natural_key.xml | 14 | ||||
| -rw-r--r-- | tests/fixtures/tests.py | 15 |
3 files changed, 23 insertions, 7 deletions
diff --git a/tests/fixtures/fixtures/invalid_deeply_nested_elements.xml b/tests/fixtures/fixtures/invalid_deeply_nested_elements.xml index 2ed39c3d36..e3ed67f320 100644 --- a/tests/fixtures/fixtures/invalid_deeply_nested_elements.xml +++ b/tests/fixtures/fixtures/invalid_deeply_nested_elements.xml @@ -3,6 +3,7 @@ <object pk="1" model="fixtures.person"> <field type="CharField" name="name"> + <!-- This <em> is unexpected & invalid --> Django <em>pony</em> </field> </object> diff --git a/tests/fixtures/fixtures/invalid_deeply_nested_elements_natural_key.xml b/tests/fixtures/fixtures/invalid_deeply_nested_elements_natural_key.xml new file mode 100644 index 0000000000..7433fad6c7 --- /dev/null +++ b/tests/fixtures/fixtures/invalid_deeply_nested_elements_natural_key.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<django-objects version="1.0"> + + <object pk="1" model="fixtures.book"> + <field type="CharField" name="name">Music for all ages</field> + <field to="fixtures.person" name="authors" rel="ManyToManyRel"> + <object> + <!-- This <em> is unexpected & invalid --> + <natural>Artist formerly known as <em>Prince</em></natural> + </object> + </field> + </object> + +</django-objects> diff --git a/tests/fixtures/tests.py b/tests/fixtures/tests.py index 7511569d21..dd03343027 100644 --- a/tests/fixtures/tests.py +++ b/tests/fixtures/tests.py @@ -10,6 +10,7 @@ from unittest import mock from django.apps import apps from django.contrib.sites.models import Site from django.core import management +from django.core.exceptions import SuspiciousOperation from django.core.files.temp import NamedTemporaryFile from django.core.management import CommandError from django.core.management.commands.dumpdata import ProxyModelWarning @@ -23,7 +24,6 @@ from .models import ( CircularA, CircularB, NaturalKeyThing, - Person, PrimaryKeyUUIDModel, ProxySpy, Spy, @@ -522,12 +522,13 @@ class FixtureLoadingTests(DumpDataAssertMixin, TestCase): ) def test_deeply_nested_elements(self): - """Text inside deeply-nested tags is skipped.""" - management.call_command( - "loaddata", "invalid_deeply_nested_elements.xml", verbosity=0 - ) - person = Person.objects.get(pk=1) - self.assertEqual(person.name, "Django") # not "Django pony" + """Text inside deeply-nested tags raises SuspiciousOperation.""" + for file in [ + "invalid_deeply_nested_elements.xml", + "invalid_deeply_nested_elements_natural_key.xml", + ]: + with self.subTest(file=file), self.assertRaises(SuspiciousOperation): + management.call_command("loaddata", file, verbosity=0) def test_dumpdata_with_excludes(self): # Load fixture1 which has a site, two articles, and a category |
