mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Renamed 'requests' test package.
This avoids a collision when third-party database backends depend on the Requests HTTP library.
This commit is contained in:
103
tests/requests_tests/test_accept_header.py
Normal file
103
tests/requests_tests/test_accept_header.py
Normal file
@@ -0,0 +1,103 @@
|
||||
from unittest import TestCase
|
||||
|
||||
from django.http import HttpRequest
|
||||
from django.http.request import MediaType
|
||||
|
||||
|
||||
class MediaTypeTests(TestCase):
|
||||
def test_empty(self):
|
||||
for empty_media_type in (None, ""):
|
||||
with self.subTest(media_type=empty_media_type):
|
||||
media_type = MediaType(empty_media_type)
|
||||
self.assertIs(media_type.is_all_types, False)
|
||||
self.assertEqual(str(media_type), "")
|
||||
self.assertEqual(repr(media_type), "<MediaType: >")
|
||||
|
||||
def test_str(self):
|
||||
self.assertEqual(str(MediaType("*/*; q=0.8")), "*/*; q=0.8")
|
||||
self.assertEqual(str(MediaType("application/xml")), "application/xml")
|
||||
|
||||
def test_repr(self):
|
||||
self.assertEqual(repr(MediaType("*/*; q=0.8")), "<MediaType: */*; q=0.8>")
|
||||
self.assertEqual(
|
||||
repr(MediaType("application/xml")),
|
||||
"<MediaType: application/xml>",
|
||||
)
|
||||
|
||||
def test_is_all_types(self):
|
||||
self.assertIs(MediaType("*/*").is_all_types, True)
|
||||
self.assertIs(MediaType("*/*; q=0.8").is_all_types, True)
|
||||
self.assertIs(MediaType("text/*").is_all_types, False)
|
||||
self.assertIs(MediaType("application/xml").is_all_types, False)
|
||||
|
||||
def test_match(self):
|
||||
tests = [
|
||||
("*/*; q=0.8", "*/*"),
|
||||
("*/*", "application/json"),
|
||||
(" */* ", "application/json"),
|
||||
("application/*", "application/json"),
|
||||
("application/xml", "application/xml"),
|
||||
(" application/xml ", "application/xml"),
|
||||
("application/xml", " application/xml "),
|
||||
]
|
||||
for accepted_type, mime_type in tests:
|
||||
with self.subTest(accepted_type, mime_type=mime_type):
|
||||
self.assertIs(MediaType(accepted_type).match(mime_type), True)
|
||||
|
||||
def test_no_match(self):
|
||||
tests = [
|
||||
(None, "*/*"),
|
||||
("", "*/*"),
|
||||
("; q=0.8", "*/*"),
|
||||
("application/xml", "application/html"),
|
||||
("application/xml", "*/*"),
|
||||
]
|
||||
for accepted_type, mime_type in tests:
|
||||
with self.subTest(accepted_type, mime_type=mime_type):
|
||||
self.assertIs(MediaType(accepted_type).match(mime_type), False)
|
||||
|
||||
|
||||
class AcceptHeaderTests(TestCase):
|
||||
def test_no_headers(self):
|
||||
"""Absence of Accept header defaults to '*/*'."""
|
||||
request = HttpRequest()
|
||||
self.assertEqual(
|
||||
[str(accepted_type) for accepted_type in request.accepted_types],
|
||||
["*/*"],
|
||||
)
|
||||
|
||||
def test_accept_headers(self):
|
||||
request = HttpRequest()
|
||||
request.META[
|
||||
"HTTP_ACCEPT"
|
||||
] = "text/html, application/xhtml+xml,application/xml ;q=0.9,*/*;q=0.8"
|
||||
self.assertEqual(
|
||||
[str(accepted_type) for accepted_type in request.accepted_types],
|
||||
[
|
||||
"text/html",
|
||||
"application/xhtml+xml",
|
||||
"application/xml; q=0.9",
|
||||
"*/*; q=0.8",
|
||||
],
|
||||
)
|
||||
|
||||
def test_request_accepts_any(self):
|
||||
request = HttpRequest()
|
||||
request.META["HTTP_ACCEPT"] = "*/*"
|
||||
self.assertIs(request.accepts("application/json"), True)
|
||||
|
||||
def test_request_accepts_none(self):
|
||||
request = HttpRequest()
|
||||
request.META["HTTP_ACCEPT"] = ""
|
||||
self.assertIs(request.accepts("application/json"), False)
|
||||
self.assertEqual(request.accepted_types, [])
|
||||
|
||||
def test_request_accepts_some(self):
|
||||
request = HttpRequest()
|
||||
request.META[
|
||||
"HTTP_ACCEPT"
|
||||
] = "text/html,application/xhtml+xml,application/xml;q=0.9"
|
||||
self.assertIs(request.accepts("text/html"), True)
|
||||
self.assertIs(request.accepts("application/xhtml+xml"), True)
|
||||
self.assertIs(request.accepts("application/xml"), True)
|
||||
self.assertIs(request.accepts("application/json"), False)
|
||||
Reference in New Issue
Block a user