django/tests/context_processors/tests.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

98 lines
3.2 KiB
Python
Raw Normal View History

"""
Tests for Django's bundled context processors.
"""
from django.test import SimpleTestCase, TestCase, override_settings
@override_settings(
ROOT_URLCONF="context_processors.urls",
TEMPLATES=[
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.request",
],
},
}
],
)
class RequestContextProcessorTests(SimpleTestCase):
"""
Tests for the ``django.template.context_processors.request`` processor.
"""
def test_request_attributes(self):
"""
The request object is available in the template and that its
attributes can't be overridden by GET and POST parameters (#3828).
"""
url = "/request_attrs/"
# We should have the request object in the template.
response = self.client.get(url)
self.assertContains(response, "Have request")
# Test is_secure.
response = self.client.get(url)
self.assertContains(response, "Not secure")
response = self.client.get(url, {"is_secure": "blah"})
self.assertContains(response, "Not secure")
response = self.client.post(url, {"is_secure": "blah"})
self.assertContains(response, "Not secure")
# Test path.
response = self.client.get(url)
self.assertContains(response, url)
response = self.client.get(url, {"path": "/blah/"})
self.assertContains(response, url)
response = self.client.post(url, {"path": "/blah/"})
self.assertContains(response, url)
@override_settings(
DEBUG=True,
INTERNAL_IPS=["127.0.0.1"],
ROOT_URLCONF="context_processors.urls",
TEMPLATES=[
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
],
},
}
],
)
class DebugContextProcessorTests(TestCase):
"""
Tests for the ``django.template.context_processors.debug`` processor.
"""
databases = {"default", "other"}
def test_debug(self):
url = "/debug/"
# We should have the debug flag in the template.
response = self.client.get(url)
self.assertContains(response, "Have debug")
# And now we should not
with override_settings(DEBUG=False):
response = self.client.get(url)
self.assertNotContains(response, "Have debug")
def test_sql_queries(self):
"""
Test whether sql_queries represents the actual amount
of queries executed. (#23364)
"""
url = "/debug/"
response = self.client.get(url)
self.assertContains(response, "First query list: 0")
self.assertContains(response, "Second query list: 1")
# Check we have not actually memoized connection.queries
self.assertContains(response, "Third query list: 2")
# Check queries for DB connection 'other'
self.assertContains(response, "Fourth query list: 3")