def test_prepend_www_custom_urlconf(self): request = self.rf.get('/customurlconf/path/') request.urlconf = 'middleware.extra_urls' r = CommonMiddleware(get_response_empty).process_request(request) self.assertEqual(r.status_code, 301) self.assertEqual(r.url, 'http://www.testserver/customurlconf/path/')
def test_etag(self): req = HttpRequest() res = HttpResponse('content') self.assertTrue(CommonMiddleware().process_response( req, res).has_header('ETag'))
def test_append_slash_disabled(self): """ Disabling append slash functionality should leave slashless URLs alone. """ request = self.rf.get('/slash') self.assertEqual(CommonMiddleware().process_request(request), None)
def test_content_length_header_not_changed(self): response = HttpResponse() bad_content_length = len(response.content) + 10 response['Content-Length'] = bad_content_length response = CommonMiddleware().process_response(HttpRequest(), response) self.assertEqual(int(response['Content-Length']), bad_content_length)
def test_prepend_www_append_slash_slashless_custom_urlconf(self): request = self.rf.get('/customurlconf/slash') request.urlconf = 'middleware.extra_urls' r = CommonMiddleware().process_request(request) self.assertEqual(r.status_code, 301) self.assertEqual(r.url, 'http://www.testserver/customurlconf/slash/')
def test_no_etag_no_store_cache(self): req = HttpRequest() res = HttpResponse('content') res['Cache-Control'] = 'No-Cache, No-Store, Max-age=0' self.assertFalse(CommonMiddleware().process_response( req, res).has_header('ETag'))
def test_content_length_header_added(self): response = HttpResponse('content') self.assertNotIn('Content-Length', response) response = CommonMiddleware().process_response(HttpRequest(), response) self.assertEqual(int(response['Content-Length']), len(response.content))
def test_deprecation(self): with self.assertRaisesMessage(RemovedInDjango40Warning, self.msg): CommonMiddleware()
def test_passing_explicit_none(self): with self.assertRaisesMessage(RemovedInDjango40Warning, self.msg): CommonMiddleware(None)
def test_non_ascii_query_string_does_not_crash(self): """Regression test for #15152""" request = self.rf.get("/slash") request.META["QUERY_STRING"] = "drink=café" r = CommonMiddleware(get_response_empty).process_request(request) self.assertEqual(r.status_code, 301)
def test_etag_streaming_response(self): req = HttpRequest() res = StreamingHttpResponse(['content']) res['ETag'] = 'tomatoes' self.assertEqual(CommonMiddleware().process_response(req, res).get('ETag'), 'tomatoes')
def test_append_slash_disabled(self): """ Disabling append slash functionality should leave slashless URLs alone. """ request = self.rf.get("/slash") self.assertEqual(CommonMiddleware(get_response_404)(request).status_code, 404)
def test_prepend_www(self): request = self._get_request('path/') r = CommonMiddleware().process_request(request) self.assertEqual(r.status_code, 301) self.assertEqual(r.url, 'http://www.testserver/path/')
def test_prepend_www_append_slash_have_slash(self): request = self._get_request('slash/') r = CommonMiddleware().process_request(request) self.assertEqual(r.status_code, 301) self.assertEqual(r.url, 'http://www.testserver/middleware/slash/')
def test_append_slash_slashless_unknown(self): """ Tests that APPEND_SLASH doesn't redirect to unknown resources. """ request = self.rf.get('/unknown') self.assertEqual(CommonMiddleware().process_request(request), None)
def test_prepend_www_append_slash_slashless(self): request = self.rf.get("/slash") r = CommonMiddleware(get_response_empty).process_request(request) self.assertEqual(r.status_code, 301) self.assertEqual(r.url, "http://www.testserver/slash/")
def test_append_slash_disabled(self): """ Tests disabling append slash functionality. """ request = self.rf.get('/slash') self.assertEqual(CommonMiddleware().process_request(request), None)
def test_prepend_www_append_slash_slashless_custom_urlconf(self): request = self.rf.get("/customurlconf/slash") request.urlconf = "middleware.extra_urls" r = CommonMiddleware(get_response_empty).process_request(request) self.assertEqual(r.status_code, 301) self.assertEqual(r.url, "http://www.testserver/customurlconf/slash/")
def test_etag_extended_cache_control(self): req = HttpRequest() res = HttpResponse('content') res['Cache-Control'] = 'my-directive="my-no-store"' self.assertTrue(CommonMiddleware().process_response( req, res).has_header('ETag'))
def test_disallowed_user_agents(self): request = self.rf.get("/slash") request.META["HTTP_USER_AGENT"] = "foo" with self.assertRaisesMessage(PermissionDenied, "Forbidden user agent"): CommonMiddleware(get_response_empty).process_request(request)
def test_content_length_header_not_added_for_streaming_response(self): response = StreamingHttpResponse('content') self.assertNotIn('Content-Length', response) response = CommonMiddleware().process_response(HttpRequest(), response) self.assertNotIn('Content-Length', response)
def test_response_redirect_class(self): request = self.rf.get("/slash") r = CommonMiddleware(get_response_404)(request) self.assertEqual(r.status_code, 301) self.assertEqual(r.url, "/slash/") self.assertIsInstance(r, HttpResponsePermanentRedirect)
def test_non_ascii_query_string_does_not_crash(self): """Regression test for #15152""" request = self.rf.get('/slash') request.META['QUERY_STRING'] = force_str('drink=café') r = CommonMiddleware().process_request(request) self.assertEqual(r.status_code, 301)
def test_response_redirect_class(self): request = self.rf.get('/slash') r = CommonMiddleware().process_request(request) self.assertEqual(r.status_code, 301) self.assertEqual(r.url, 'http://testserver/slash/') self.assertIsInstance(r, HttpResponsePermanentRedirect)
def test_disallowed_user_agents(self): request = self.rf.get('/slash') request.META['HTTP_USER_AGENT'] = 'foo' with self.assertRaisesMessage(PermissionDenied, 'Forbidden user agent'): CommonMiddleware().process_request(request)
def test_append_slash_have_slash(self): """ Tests that URLs with slashes go unmolested. """ request = self.rf.get('/slash/') self.assertEqual(CommonMiddleware().process_request(request), None)
def test_no_etag_streaming_response(self): req = HttpRequest() res = StreamingHttpResponse(['content']) self.assertFalse(CommonMiddleware().process_response( req, res).has_header('ETag'))
def test_append_slash_slashless_resource(self): """ Tests that matches to explicit slashless URLs go unmolested. """ request = self.rf.get('/noslash') self.assertEqual(CommonMiddleware().process_request(request), None)
def test_prepend_www_append_slash_slashless(self): request = self.rf.get('/slash') r = CommonMiddleware().process_request(request) self.assertEqual(r.status_code, 301) self.assertEqual(r.url, 'http://www.testserver/slash/')
def test_404_error_reporting_ignored_url(self): 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)