diff options
| author | Luke Plant <L.Plant.98@cantab.net> | 2011-05-05 20:49:26 +0000 |
|---|---|---|
| committer | Luke Plant <L.Plant.98@cantab.net> | 2011-05-05 20:49:26 +0000 |
| commit | 171df93170df23d2fea1f8320ddb80c6f6444ff7 (patch) | |
| tree | ba9ccc91915ff2d3f76a45994d5f49f4df7d6bce /tests | |
| parent | db5807bdb1f242cc928e2fdf7110cb20af34790f (diff) | |
Fixed #15954 - New IGNORABLE_404_URLS setting that allows more powerful filtering of 404s to ignore
Thanks to aaugustin for implementing this.
(Technically this doesn't fix the original report, as we've decided against
having *any* default values, but the new feature makes it possible, and the
docs have an example addressing #15954).
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16160 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/regressiontests/middleware/tests.py | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/tests/regressiontests/middleware/tests.py b/tests/regressiontests/middleware/tests.py index c364cb436e..c069228487 100644 --- a/tests/regressiontests/middleware/tests.py +++ b/tests/regressiontests/middleware/tests.py @@ -1,6 +1,9 @@ # -*- coding: utf-8 -*- +import re + from django.conf import settings +from django.core import mail from django.http import HttpRequest from django.middleware.common import CommonMiddleware from django.middleware.http import ConditionalGetMiddleware @@ -9,12 +12,16 @@ from django.test import TestCase class CommonMiddlewareTest(TestCase): def setUp(self): - self.slash = settings.APPEND_SLASH - self.www = settings.PREPEND_WWW + self.append_slash = settings.APPEND_SLASH + self.prepend_www = settings.PREPEND_WWW + self.ignorable_404_urls = settings.IGNORABLE_404_URLS + self.send_broken_email_links = settings.SEND_BROKEN_LINK_EMAILS def tearDown(self): - settings.APPEND_SLASH = self.slash - settings.PREPEND_WWW = self.www + settings.APPEND_SLASH = self.append_slash + settings.PREPEND_WWW = self.prepend_www + settings.IGNORABLE_404_URLS = self.ignorable_404_urls + settings.SEND_BROKEN_LINK_EMAILS = self.send_broken_email_links def _get_request(self, path): request = HttpRequest() @@ -249,6 +256,36 @@ class CommonMiddlewareTest(TestCase): self.assertEqual(r['Location'], 'http://www.testserver/middleware/customurlconf/slash/') + # Tests for the 404 error reporting via email + + def test_404_error_reporting(self): + settings.IGNORABLE_404_URLS = (re.compile(r'foo'),) + settings.SEND_BROKEN_LINK_EMAILS = True + request = self._get_request('regular_url/that/does/not/exist') + request.META['HTTP_REFERER'] = '/another/url/' + response = self.client.get(request.path) + CommonMiddleware().process_response(request, response) + self.assertEqual(len(mail.outbox), 1) + self.assertIn('Broken', mail.outbox[0].subject) + + def test_404_error_reporting_no_referer(self): + settings.IGNORABLE_404_URLS = (re.compile(r'foo'),) + settings.SEND_BROKEN_LINK_EMAILS = True + request = self._get_request('regular_url/that/does/not/exist') + response = self.client.get(request.path) + CommonMiddleware().process_response(request, response) + self.assertEqual(len(mail.outbox), 0) + + def test_404_error_reporting_ignored_url(self): + settings.IGNORABLE_404_URLS = (re.compile(r'foo'),) + settings.SEND_BROKEN_LINK_EMAILS = True + request = self._get_request('foo_url/that/does/not/exist/either') + request.META['HTTP_REFERER'] = '/another/url/' + response = self.client.get(request.path) + CommonMiddleware().process_response(request, response) + self.assertEqual(len(mail.outbox), 0) + + class ConditionalGetMiddlewareTest(TestCase): urls = 'regressiontests.middleware.cond_get_urls' def setUp(self): |
