summaryrefslogtreecommitdiff
path: root/tests/regressiontests/admin_views
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2011-01-03 13:56:31 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2011-01-03 13:56:31 +0000
commit6bd8c14be98815627e740d862b1148d0c4fb1514 (patch)
treedd6fc15d5c4d93c46c33dbbb08f70d23e65b3b13 /tests/regressiontests/admin_views
parentd41bd3f7f288300bb34a9a47ff44fd9bab0c1df0 (diff)
Fixed #14999 -- Ensure that filters on local fields are allowed, and aren't caught as a security problem. Thanks to medhat for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15139 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/admin_views')
-rw-r--r--tests/regressiontests/admin_views/models.py3
-rw-r--r--tests/regressiontests/admin_views/tests.py10
2 files changed, 10 insertions, 3 deletions
diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py
index df2f60c024..49c68e633f 100644
--- a/tests/regressiontests/admin_views/models.py
+++ b/tests/regressiontests/admin_views/models.py
@@ -176,7 +176,7 @@ class Thing(models.Model):
return self.title
class ThingAdmin(admin.ModelAdmin):
- list_filter = ('color', 'color__warm', 'color__value')
+ list_filter = ('color__warm', 'color__value')
class Fabric(models.Model):
NG_CHOICES = (
@@ -200,6 +200,7 @@ class Person(models.Model):
)
name = models.CharField(max_length=100)
gender = models.IntegerField(choices=GENDER_CHOICES)
+ age = models.IntegerField(default=21)
alive = models.BooleanField()
def __unicode__(self):
diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py
index 90abfa8dbb..5a0385faa5 100644
--- a/tests/regressiontests/admin_views/tests.py
+++ b/tests/regressiontests/admin_views/tests.py
@@ -372,10 +372,16 @@ class AdminViewBasicTest(TestCase):
)
try:
- self.client.get("/test_admin/admin/admin_views/stuff/?color__value__startswith=red")
+ self.client.get("/test_admin/admin/admin_views/thing/?color__value__startswith=red")
+ self.client.get("/test_admin/admin/admin_views/thing/?color__value=red")
except SuspiciousOperation:
self.fail("Filters are allowed if explicitly included in list_filter")
+ try:
+ self.client.get("/test_admin/admin/admin_views/person/?age__gt=30")
+ except SuspiciousOperation:
+ self.fail("Filters should be allowed if they involve a local field without the need to whitelist them in list_filter or date_hierarchy.")
+
class SaveAsTests(TestCase):
fixtures = ['admin-views-users.xml','admin-views-person.xml']
@@ -387,7 +393,7 @@ class SaveAsTests(TestCase):
def test_save_as_duplication(self):
"""Ensure save as actually creates a new person"""
- post_data = {'_saveasnew':'', 'name':'John M', 'gender':1}
+ post_data = {'_saveasnew':'', 'name':'John M', 'gender':1, 'age': 42}
response = self.client.post('/test_admin/admin/admin_views/person/1/', post_data)
self.assertEqual(len(Person.objects.filter(name='John M')), 1)
self.assertEqual(len(Person.objects.filter(id=1)), 1)