summaryrefslogtreecommitdiff
path: root/tests/fixtures
diff options
context:
space:
mode:
authorJacob Walls <jacobtylerwalls@gmail.com>2026-01-07 16:23:48 -0500
committerJacob Walls <jacobtylerwalls@gmail.com>2026-01-12 16:38:32 -0500
commit73c5e94521c5b97e27cd2fe2d5b5c2e65f402755 (patch)
tree03a799e0dfdac608e9ba5c95c5186bc31d851754 /tests/fixtures
parenta25158f5cc590f3dff4226c3a48257481e6e67a6 (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.xml1
-rw-r--r--tests/fixtures/fixtures/invalid_deeply_nested_elements_natural_key.xml14
-rw-r--r--tests/fixtures/tests.py15
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