mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-11 12:17:24 +03:00
41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
from django.test import Client
|
|
from django.core.handlers.wsgi import WSGIRequest
|
|
|
|
# From: http://djangosnippets.org/snippets/963/
|
|
# Lovely stuff
|
|
class RequestFactory(Client):
|
|
"""
|
|
Class that lets you create mock Request objects for use in testing.
|
|
|
|
Usage:
|
|
|
|
rf = RequestFactory()
|
|
get_request = rf.get('/hello/')
|
|
post_request = rf.post('/submit/', {'foo': 'bar'})
|
|
|
|
This class re-uses the django.test.client.Client interface, docs here:
|
|
http://www.djangoproject.com/documentation/testing/#the-test-client
|
|
|
|
Once you have a request object you can pass it to any view function,
|
|
just as if that view had been hooked up using a URLconf.
|
|
|
|
"""
|
|
def request(self, **request):
|
|
"""
|
|
Similar to parent class, but returns the request object as soon as it
|
|
has created it.
|
|
"""
|
|
environ = {
|
|
'HTTP_COOKIE': self.cookies,
|
|
'PATH_INFO': '/',
|
|
'QUERY_STRING': '',
|
|
'REQUEST_METHOD': 'GET',
|
|
'SCRIPT_NAME': '',
|
|
'SERVER_NAME': 'testserver',
|
|
'SERVER_PORT': 80,
|
|
'SERVER_PROTOCOL': 'HTTP/1.1',
|
|
}
|
|
environ.update(self.defaults)
|
|
environ.update(request)
|
|
return WSGIRequest(environ)
|