aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework/tests
diff options
context:
space:
mode:
Diffstat (limited to 'djangorestframework/tests')
-rw-r--r--djangorestframework/tests/accept.py2
-rw-r--r--djangorestframework/tests/authentication.py4
-rw-r--r--djangorestframework/tests/breadcrumbs.py2
-rw-r--r--djangorestframework/tests/description.py12
-rw-r--r--djangorestframework/tests/files.py2
-rw-r--r--djangorestframework/tests/methods.py4
-rw-r--r--djangorestframework/tests/modelviews.py22
-rw-r--r--djangorestframework/tests/oauthentication.py46
-rw-r--r--djangorestframework/tests/package.py2
-rw-r--r--djangorestframework/tests/parsers.py66
-rw-r--r--djangorestframework/tests/response.py2
-rw-r--r--djangorestframework/tests/serializer.py2
-rw-r--r--djangorestframework/tests/status.py2
-rw-r--r--djangorestframework/tests/testcases.py4
-rw-r--r--djangorestframework/tests/throttling.py38
-rw-r--r--djangorestframework/tests/validators.py72
-rw-r--r--djangorestframework/tests/views.py66
17 files changed, 174 insertions, 174 deletions
diff --git a/djangorestframework/tests/accept.py b/djangorestframework/tests/accept.py
index f26de633..4f9dbb32 100644
--- a/djangorestframework/tests/accept.py
+++ b/djangorestframework/tests/accept.py
@@ -50,7 +50,7 @@ class UserAgentMungingTest(TestCase):
req = self.req.get('/', HTTP_ACCEPT='*/*', HTTP_USER_AGENT=user_agent)
resp = view(req)
self.assertEqual(resp['Content-Type'], 'application/json')
-
+
def test_dont_munge_nice_browsers_accept_header(self):
"""Send Non-MSIE user agent strings and ensure that we get a JSON response,
if we set a */* Accept header. (Other browsers will correctly set the Accept header)"""
diff --git a/djangorestframework/tests/authentication.py b/djangorestframework/tests/authentication.py
index 8254403c..e6da4217 100644
--- a/djangorestframework/tests/authentication.py
+++ b/djangorestframework/tests/authentication.py
@@ -31,7 +31,7 @@ class BasicAuthTests(TestCase):
self.username = 'john'
self.email = 'lennon@thebeatles.com'
self.password = 'password'
- self.user = User.objects.create_user(self.username, self.email, self.password)
+ self.user = User.objects.create_user(self.username, self.email, self.password)
def test_post_form_passing_basic_auth(self):
"""Ensure POSTing json over basic auth with correct credentials passes and does not require CSRF"""
@@ -66,7 +66,7 @@ class SessionAuthTests(TestCase):
self.username = 'john'
self.email = 'lennon@thebeatles.com'
self.password = 'password'
- self.user = User.objects.create_user(self.username, self.email, self.password)
+ self.user = User.objects.create_user(self.username, self.email, self.password)
def tearDown(self):
self.csrf_client.logout()
diff --git a/djangorestframework/tests/breadcrumbs.py b/djangorestframework/tests/breadcrumbs.py
index dc1a02bf..d7473c6a 100644
--- a/djangorestframework/tests/breadcrumbs.py
+++ b/djangorestframework/tests/breadcrumbs.py
@@ -64,4 +64,4 @@ class BreadcrumbTests(TestCase):
def test_broken_url_breadcrumbs_handled_gracefully(self):
url = '/foobar'
- self.assertEqual(get_breadcrumbs(url), [('Root', '/')]) \ No newline at end of file
+ self.assertEqual(get_breadcrumbs(url), [('Root', '/')])
diff --git a/djangorestframework/tests/description.py b/djangorestframework/tests/description.py
index c0424c24..56dcdfab 100644
--- a/djangorestframework/tests/description.py
+++ b/djangorestframework/tests/description.py
@@ -19,7 +19,7 @@ indented
# hash style header #"""
-# If markdown is installed we also test it's working
+# If markdown is installed we also test it's working
# (and that our wrapped forces '=' to h2 and '-' to h3)
# We support markdown < 2.1 and markdown >= 2.1
@@ -69,16 +69,16 @@ class TestViewNamesAndDescriptions(TestCase):
* list
* list
-
+
another header
--------------
code block
indented
-
+
# hash style header #"""
-
+
self.assertEquals(get_description(MockView()), DESCRIPTION)
# This has been turned off now
@@ -89,7 +89,7 @@ class TestViewNamesAndDescriptions(TestCase):
# """docstring"""
# description = example
# self.assertEquals(get_description(MockView()), example)
-
+
#def test_resource_description_does_not_require_docstring(self):
# """Ensure that empty docstrings do not affect the Resource's description if it has been set using the 'description' class attribute."""
# example = 'Some other description'
@@ -102,7 +102,7 @@ class TestViewNamesAndDescriptions(TestCase):
class MockView(View):
pass
self.assertEquals(get_description(MockView()), '')
-
+
def test_markdown(self):
"""Ensure markdown to HTML works as expected"""
if apply_markdown:
diff --git a/djangorestframework/tests/files.py b/djangorestframework/tests/files.py
index 992d3cba..91f46061 100644
--- a/djangorestframework/tests/files.py
+++ b/djangorestframework/tests/files.py
@@ -22,7 +22,7 @@ class UploadFilesTests(TestCase):
def post(self, request, *args, **kwargs):
return {'FILE_NAME': self.CONTENT['file'].name,
'FILE_CONTENT': self.CONTENT['file'].read()}
-
+
file = StringIO.StringIO('stuff')
file.name = 'stuff.txt'
request = self.factory.post('/', {'file': file})
diff --git a/djangorestframework/tests/methods.py b/djangorestframework/tests/methods.py
index c3a3a28d..4b90a21f 100644
--- a/djangorestframework/tests/methods.py
+++ b/djangorestframework/tests/methods.py
@@ -3,7 +3,7 @@ from djangorestframework.compat import RequestFactory
from djangorestframework.mixins import RequestMixin
-class TestMethodOverloading(TestCase):
+class TestMethodOverloading(TestCase):
def setUp(self):
self.req = RequestFactory()
@@ -18,7 +18,7 @@ class TestMethodOverloading(TestCase):
view = RequestMixin()
view.request = self.req.post('/')
self.assertEqual(view.method, 'POST')
-
+
def test_overloaded_POST_behaviour_determines_overloaded_method(self):
"""POST requests can be overloaded to another method by setting a reserved form field"""
view = RequestMixin()
diff --git a/djangorestframework/tests/modelviews.py b/djangorestframework/tests/modelviews.py
index 3fbc8ab6..031e65c5 100644
--- a/djangorestframework/tests/modelviews.py
+++ b/djangorestframework/tests/modelviews.py
@@ -18,9 +18,9 @@ class UserForm(ModelForm):
class UserResource(ModelResource):
model = User
form = UserForm
-
+
class CustomUserResource(ModelResource):
- model = CustomUser
+ model = CustomUser
urlpatterns = patterns('',
url(r'^users/$', ListOrCreateModelView.as_view(resource=UserResource), name='users'),
@@ -34,7 +34,7 @@ urlpatterns = patterns('',
class ModelViewTests(TestModelsTestCase):
"""Test the model views djangorestframework provides"""
- urls = 'djangorestframework.tests.modelviews'
+ urls = 'djangorestframework.tests.modelviews'
def test_creation(self):
"""Ensure that a model object can be created"""
@@ -53,18 +53,18 @@ class ModelViewTests(TestModelsTestCase):
self.assertEqual(0, User.objects.count())
response = self.client.post('/users/', {'username': 'bar', 'password': 'baz', 'groups': [group.id]})
-
+
self.assertEqual(response.status_code, 201)
self.assertEqual(1, User.objects.count())
-
+
user = User.objects.all()[0]
self.assertEqual('bar', user.username)
self.assertEqual('baz', user.password)
self.assertEqual(1, user.groups.count())
-
+
group = user.groups.all()[0]
self.assertEqual('foo', group.name)
-
+
def test_creation_with_m2m_relation_through(self):
"""
Ensure that a model object with a m2m relation can be created where that
@@ -75,13 +75,13 @@ class ModelViewTests(TestModelsTestCase):
self.assertEqual(0, User.objects.count())
response = self.client.post('/customusers/', {'username': 'bar', 'groups': [group.id]})
-
+
self.assertEqual(response.status_code, 201)
self.assertEqual(1, CustomUser.objects.count())
-
+
user = CustomUser.objects.all()[0]
self.assertEqual('bar', user.username)
self.assertEqual(1, user.groups.count())
-
+
group = user.groups.all()[0]
- self.assertEqual('foo', group.name)
+ self.assertEqual('foo', group.name)
diff --git a/djangorestframework/tests/oauthentication.py b/djangorestframework/tests/oauthentication.py
index 109d9a72..b4bcf2fa 100644
--- a/djangorestframework/tests/oauthentication.py
+++ b/djangorestframework/tests/oauthentication.py
@@ -23,14 +23,14 @@ else:
class ClientView(View):
def get(self, request):
return {'resource': 'Protected!'}
-
+
urlpatterns = patterns('',
url(r'^$', oauth_required(ClientView.as_view())),
url(r'^oauth/', include('oauth_provider.urls')),
url(r'^accounts/login/$', 'djangorestframework.utils.staticviews.api_login'),
)
-
-
+
+
class OAuthTests(TestCase):
"""
OAuth authentication:
@@ -42,23 +42,23 @@ else:
* the third-party website is able to retrieve data from the API
"""
urls = 'djangorestframework.tests.oauthentication'
-
+
def setUp(self):
self.client = Client()
self.username = 'john'
self.email = 'lennon@thebeatles.com'
self.password = 'password'
self.user = User.objects.create_user(self.username, self.email, self.password)
-
+
# OAuth requirements
self.resource = Resource(name='data', url='/')
self.resource.save()
self.CONSUMER_KEY = 'dpf43f3p2l4k3l03'
self.CONSUMER_SECRET = 'kd94hf93k423kf44'
- self.consumer = Consumer(key=self.CONSUMER_KEY, secret=self.CONSUMER_SECRET,
+ self.consumer = Consumer(key=self.CONSUMER_KEY, secret=self.CONSUMER_SECRET,
name='api.example.com', user=self.user)
self.consumer.save()
-
+
def test_oauth_invalid_and_anonymous_access(self):
"""
Verify that the resource is protected and the OAuth authorization view
@@ -69,16 +69,16 @@ else:
self.assertEqual(response.status_code, 401)
response = self.client.get('/oauth/authorize/', follow=True)
self.assertRedirects(response, '/accounts/login/?next=/oauth/authorize/')
-
+
def test_oauth_authorize_access(self):
"""
- Verify that once logged in, the user can access the authorization page
+ Verify that once logged in, the user can access the authorization page
but can't display the page because the request token is not specified.
"""
self.client.login(username=self.username, password=self.password)
response = self.client.get('/oauth/authorize/', follow=True)
self.assertEqual(response.content, 'No request token specified.')
-
+
def _create_request_token_parameters(self):
"""
A shortcut to create request's token parameters.
@@ -93,28 +93,28 @@ else:
'oauth_callback': 'http://api.example.com/request_token_ready',
'scope': 'data',
}
-
+
def test_oauth_request_token_retrieval(self):
"""
Verify that the request token can be retrieved by the server.
"""
- response = self.client.get("/oauth/request_token/",
+ response = self.client.get("/oauth/request_token/",
self._create_request_token_parameters())
self.assertEqual(response.status_code, 200)
token = list(Token.objects.all())[-1]
self.failIf(token.key not in response.content)
self.failIf(token.secret not in response.content)
-
+
def test_oauth_user_request_authorization(self):
"""
Verify that the user can access the authorization page once logged in
and the request token has been retrieved.
"""
# Setup
- response = self.client.get("/oauth/request_token/",
+ response = self.client.get("/oauth/request_token/",
self._create_request_token_parameters())
token = list(Token.objects.all())[-1]
-
+
# Starting the test here
self.client.login(username=self.username, password=self.password)
parameters = {'oauth_token': token.key,}
@@ -129,7 +129,7 @@ else:
token = Token.objects.get(key=token.key)
self.failIf(token.key not in response['Location'])
self.assertEqual(token.is_approved, 1)
-
+
def _create_access_token_parameters(self, token):
"""
A shortcut to create access' token parameters.
@@ -145,13 +145,13 @@ else:
'oauth_verifier': token.verifier,
'scope': 'data',
}
-
+
def test_oauth_access_token_retrieval(self):
"""
Verify that the request token can be retrieved by the server.
"""
# Setup
- response = self.client.get("/oauth/request_token/",
+ response = self.client.get("/oauth/request_token/",
self._create_request_token_parameters())
token = list(Token.objects.all())[-1]
self.client.login(username=self.username, password=self.password)
@@ -160,7 +160,7 @@ else:
parameters['authorize_access'] = 1 # fake authorization by the user
response = self.client.post("/oauth/authorize/", parameters)
token = Token.objects.get(key=token.key)
-
+
# Starting the test here
response = self.client.get("/oauth/access_token/", self._create_access_token_parameters(token))
self.assertEqual(response.status_code, 200)
@@ -169,7 +169,7 @@ else:
self.failIf(access_token.key not in response.content)
self.failIf(access_token.secret not in response.content)
self.assertEqual(access_token.user.username, 'john')
-
+
def _create_access_parameters(self, access_token):
"""
A shortcut to create access' parameters.
@@ -188,13 +188,13 @@ else:
signature = signature_method.sign(oauth_request, self.consumer, access_token)
parameters['oauth_signature'] = signature
return parameters
-
+
def test_oauth_protected_resource_access(self):
"""
Verify that the request token can be retrieved by the server.
"""
# Setup
- response = self.client.get("/oauth/request_token/",
+ response = self.client.get("/oauth/request_token/",
self._create_request_token_parameters())
token = list(Token.objects.all())[-1]
self.client.login(username=self.username, password=self.password)
@@ -205,7 +205,7 @@ else:
token = Token.objects.get(key=token.key)
response = self.client.get("/oauth/access_token/", self._create_access_token_parameters(token))
access_token = list(Token.objects.filter(token_type=Token.ACCESS))[-1]
-
+
# Starting the test here
response = self.client.get("/", self._create_access_token_parameters(access_token))
self.assertEqual(response.status_code, 200)
diff --git a/djangorestframework/tests/package.py b/djangorestframework/tests/package.py
index 4128333c..d18128f7 100644
--- a/djangorestframework/tests/package.py
+++ b/djangorestframework/tests/package.py
@@ -2,7 +2,7 @@
from django.test import TestCase
import djangorestframework
-class TestVersion(TestCase):
+class TestVersion(TestCase):
"""Simple sanity test to check the VERSION exists"""
def test_version(self):
diff --git a/djangorestframework/tests/parsers.py b/djangorestframework/tests/parsers.py
index b21acd4d..e4e7e09a 100644
--- a/djangorestframework/tests/parsers.py
+++ b/djangorestframework/tests/parsers.py
@@ -8,76 +8,76 @@
# >>> req = RequestFactory().get('/')
# >>> some_view = View()
# >>> some_view.request = req # Make as if this request had been dispatched
-#
+#
# FormParser
# ============
-#
+#
# Data flatening
# ----------------
-#
+#
# Here is some example data, which would eventually be sent along with a post request :
-#
+#
# >>> inpt = urlencode([
# ... ('key1', 'bla1'),
# ... ('key2', 'blo1'), ('key2', 'blo2'),
# ... ])
-#
+#
# Default behaviour for :class:`parsers.FormParser`, is to return a single value for each parameter :
-#
+#
# >>> (data, files) = FormParser(some_view).parse(StringIO(inpt))
# >>> data == {'key1': 'bla1', 'key2': 'blo1'}
# True
-#
+#
# However, you can customize this behaviour by subclassing :class:`parsers.FormParser`, and overriding :meth:`parsers.FormParser.is_a_list` :
-#
+#
# >>> class MyFormParser(FormParser):
-# ...
+# ...
# ... def is_a_list(self, key, val_list):
# ... return len(val_list) > 1
-#
+#
# This new parser only flattens the lists of parameters that contain a single value.
-#
+#
# >>> (data, files) = MyFormParser(some_view).parse(StringIO(inpt))
# >>> data == {'key1': 'bla1', 'key2': ['blo1', 'blo2']}
# True
-#
+#
# .. note:: The same functionality is available for :class:`parsers.MultiPartParser`.
-#
+#
# Submitting an empty list
# --------------------------
-#
+#
# When submitting an empty select multiple, like this one ::
-#
+#
# <select multiple="multiple" name="key2"></select>
-#
+#
# The browsers usually strip the parameter completely. A hack to avoid this, and therefore being able to submit an empty select multiple, is to submit a value that tells the server that the list is empty ::
-#
+#
# <select multiple="multiple" name="key2"><option value="_empty"></select>
-#
+#
# :class:`parsers.FormParser` provides the server-side implementation for this hack. Considering the following posted data :
-#
+#
# >>> inpt = urlencode([
# ... ('key1', 'blo1'), ('key1', '_empty'),
# ... ('key2', '_empty'),
# ... ])
-#
+#
# :class:`parsers.FormParser` strips the values ``_empty`` from all the lists.
-#
+#
# >>> (data, files) = MyFormParser(some_view).parse(StringIO(inpt))
# >>> data == {'key1': 'blo1'}
# True
-#
+#
# Oh ... but wait a second, the parameter ``key2`` isn't even supposed to be a list, so the parser just stripped it.
-#
+#
# >>> class MyFormParser(FormParser):
-# ...
+# ...
# ... def is_a_list(self, key, val_list):
# ... return key == 'key2'
-# ...
+# ...
# >>> (data, files) = MyFormParser(some_view).parse(StringIO(inpt))
# >>> data == {'key1': 'blo1', 'key2': []}
# True
-#
+#
# Better like that. Note that you can configure something else than ``_empty`` for the empty value by setting :attr:`parsers.FormParser.EMPTY_VALUE`.
# """
# import httplib, mimetypes
@@ -87,7 +87,7 @@
# from djangorestframework.parsers import MultiPartParser
# from djangorestframework.views import View
# from StringIO import StringIO
-#
+#
# def encode_multipart_formdata(fields, files):
# """For testing multipart parser.
# fields is a sequence of (name, value) elements for regular form fields.
@@ -112,10 +112,10 @@
# body = CRLF.join(L)
# content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
# return content_type, body
-#
+#
# def get_content_type(filename):
# return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
-#
+#
#class TestMultiPartParser(TestCase):
# def setUp(self):
# self.req = RequestFactory()
@@ -145,12 +145,12 @@ class Form(forms.Form):
class TestFormParser(TestCase):
def setUp(self):
- self.string = "field1=abc&field2=defghijk"
-
+ self.string = "field1=abc&field2=defghijk"
+
def test_parse(self):
""" Make sure the `QueryDict` works OK """
parser = FormParser(None)
-
+
stream = StringIO(self.string)
(data, files) = parser.parse(stream)
@@ -179,4 +179,4 @@ class TestXMLParser(TestCase):
def test_parse(self):
parser = XMLParser(None)
(data, files) = parser.parse(self.input)
- self.assertEqual(data, self.data) \ No newline at end of file
+ self.assertEqual(data, self.data)
diff --git a/djangorestframework/tests/response.py b/djangorestframework/tests/response.py
index 6f225fa8..d973deb4 100644
--- a/djangorestframework/tests/response.py
+++ b/djangorestframework/tests/response.py
@@ -5,7 +5,7 @@
#from djangorestframework.response import Response
#
#
-#class TestResponse(TestCase):
+#class TestResponse(TestCase):
#
# # Interface tests
#
diff --git a/djangorestframework/tests/serializer.py b/djangorestframework/tests/serializer.py
index 5f42e7e2..8e370fa1 100644
--- a/djangorestframework/tests/serializer.py
+++ b/djangorestframework/tests/serializer.py
@@ -7,7 +7,7 @@ from django.db import models
import datetime
import decimal
-class TestObjectToData(TestCase):
+class TestObjectToData(TestCase):
"""
Tests for the Serializer class.
"""
diff --git a/djangorestframework/tests/status.py b/djangorestframework/tests/status.py
index 9456ca9e..04aed740 100644
--- a/djangorestframework/tests/status.py
+++ b/djangorestframework/tests/status.py
@@ -3,7 +3,7 @@ from django.test import TestCase
from djangorestframework import status
-class TestStatus(TestCase):
+class TestStatus(TestCase):
"""Simple sanity test to check the status module"""
def test_status(self):
diff --git a/djangorestframework/tests/testcases.py b/djangorestframework/tests/testcases.py
index ad0c7be6..51b4afbc 100644
--- a/djangorestframework/tests/testcases.py
+++ b/djangorestframework/tests/testcases.py
@@ -53,11 +53,11 @@ class SettingsTestCase(TestCase):
def __init__(self, *args, **kwargs):
super(SettingsTestCase, self).__init__(*args, **kwargs)
self.settings_manager = TestSettingsManager()
-
+
def tearDown(self):
self.settings_manager.revert()
class TestModelsTestCase(SettingsTestCase):
def setUp(self, *args, **kwargs):
installed_apps = tuple(settings.INSTALLED_APPS) + ('djangorestframework.tests',)
- self.settings_manager.set(INSTALLED_APPS=installed_apps) \ No newline at end of file
+ self.settings_manager.set(INSTALLED_APPS=installed_apps)
diff --git a/djangorestframework/tests/throttling.py b/djangorestframework/tests/throttling.py
index b620ee24..7fdc6491 100644
--- a/djangorestframework/tests/throttling.py
+++ b/djangorestframework/tests/throttling.py
@@ -21,25 +21,25 @@ class MockView(View):
class MockView_PerViewThrottling(MockView):
permissions = ( PerViewThrottling, )
-class MockView_PerResourceThrottling(MockView):
+class MockView_PerResourceThrottling(MockView):
permissions = ( PerResourceThrottling, )
resource = FormResource
class MockView_MinuteThrottling(MockView):
throttle = '3/min'
-
-
-
+
+
+
class ThrottlingTests(TestCase):
- urls = 'djangorestframework.tests.throttling'
-
+ urls = 'djangorestframework.tests.throttling'
+
def setUp(self):
"""
Reset the cache so that no throttles will be active
"""
cache.clear()
self.factory = RequestFactory()
-
+
def test_requests_are_throttled(self):
"""
Ensure request rate is limited
@@ -48,7 +48,7 @@ class ThrottlingTests(TestCase):
for dummy in range(4):
response = MockView.as_view()(request)
self.assertEqual(503, response.status_code)
-
+
def set_throttle_timer(self, view, value):
"""
Explicitly set the timer, overriding time.time()
@@ -71,7 +71,7 @@ class ThrottlingTests(TestCase):
response = MockView.as_view()(request)
self.assertEqual(200, response.status_code)
-
+
def ensure_is_throttled(self, view, expect):
request = self.factory.get('/')
request.user = User.objects.create(username='a')
@@ -80,27 +80,27 @@ class ThrottlingTests(TestCase):
request.user = User.objects.create(username='b')
response = view.as_view()(request)
self.assertEqual(expect, response.status_code)
-
+
def test_request_throttling_is_per_user(self):
"""
- Ensure request rate is only limited per user, not globally for
+ Ensure request rate is only limited per user, not globally for
PerUserThrottles
"""
self.ensure_is_throttled(MockView, 200)
-
+
def test_request_throttling_is_per_view(self):
"""
Ensure request rate is limited globally per View for PerViewThrottles
"""
self.ensure_is_throttled(MockView_PerViewThrottling, 503)
-
+
def test_request_throttling_is_per_resource(self):
"""
Ensure request rate is limited globally per Resource for PerResourceThrottles
- """
+ """
self.ensure_is_throttled(MockView_PerResourceThrottling, 503)
-
-
+
+
def ensure_response_header_contains_proper_throttle_field(self, view, expected_headers):
"""
Ensure the response returns an X-Throttle field with status and next attributes
@@ -111,7 +111,7 @@ class ThrottlingTests(TestCase):
self.set_throttle_timer(view, timer)
response = view.as_view()(request)
self.assertEquals(response['X-Throttle'], expect)
-
+
def test_seconds_fields(self):
"""
Ensure for second based throttles.
@@ -122,7 +122,7 @@ class ThrottlingTests(TestCase):
(0, 'status=SUCCESS; next=1.00 sec'),
(0, 'status=FAILURE; next=1.00 sec')
))
-
+
def test_minutes_fields(self):
"""
Ensure for minute based throttles.
@@ -133,7 +133,7 @@ class ThrottlingTests(TestCase):
(0, 'status=SUCCESS; next=60.00 sec'),
(0, 'status=FAILURE; next=60.00 sec')
))
-
+
def test_next_rate_remains_constant_if_followed(self):
"""
If a client follows the recommended next request rate,
diff --git a/djangorestframework/tests/validators.py b/djangorestframework/tests/validators.py
index a1e5d2d7..1f696422 100644
--- a/djangorestframework/tests/validators.py
+++ b/djangorestframework/tests/validators.py
@@ -22,7 +22,7 @@ class TestDisabledValidations(TestCase):
resource = DisabledFormResource
view = MockView()
- content = {'qwerty':'uiop'}
+ content = {'qwerty':'uiop'}
self.assertEqual(FormResource(view).validate_request(content, None), content)
def test_disabled_form_validator_get_bound_form_returns_none(self):
@@ -33,12 +33,12 @@ class TestDisabledValidations(TestCase):
class MockView(View):
resource = DisabledFormResource
-
+
view = MockView()
- content = {'qwerty':'uiop'}
+ content = {'qwerty':'uiop'}
self.assertEqual(FormResource(view).get_bound_form(content), None)
-
+
def test_disabled_model_form_validator_returns_content_unchanged(self):
"""If the view's form is None and does not have a Resource with a model set then
ModelFormValidator(view).validate_request(content, None) should just return the content unmodified."""
@@ -47,17 +47,17 @@ class TestDisabledValidations(TestCase):
resource = ModelResource
view = DisabledModelFormView()
- content = {'qwerty':'uiop'}
+ content = {'qwerty':'uiop'}
self.assertEqual(ModelResource(view).get_bound_form(content), None)#
def test_disabled_model_form_validator_get_bound_form_returns_none(self):
"""If the form attribute is None on FormValidatorMixin then get_bound_form(content) should just return None."""
class DisabledModelFormView(View):
resource = ModelResource
-
+
view = DisabledModelFormView()
- content = {'qwerty':'uiop'}
- self.assertEqual(ModelResource(view).get_bound_form(content), None)
+ content = {'qwerty':'uiop'}
+ self.assertEqual(ModelResource(view).get_bound_form(content), None)
class TestNonFieldErrors(TestCase):
"""Tests against form validation errors caused by non-field errors. (eg as might be caused by some custom form validation)"""
@@ -68,15 +68,15 @@ class TestNonFieldErrors(TestCase):
field1 = forms.CharField(required=False)
field2 = forms.CharField(required=False)
ERROR_TEXT = 'You may not supply both field1 and field2'
-
+
def clean(self):
if 'field1' in self.cleaned_data and 'field2' in self.cleaned_data:
raise forms.ValidationError(self.ERROR_TEXT)
return self.cleaned_data #pragma: no cover
-
+
class MockResource(FormResource):
form = MockForm
-
+
class MockView(View):
pass
@@ -84,7 +84,7 @@ class TestNonFieldErrors(TestCase):
content = {'field1': 'example1', 'field2': 'example2'}
try:
MockResource(view).validate_request(content, None)
- except ErrorResponse, exc:
+ except ErrorResponse, exc:
self.assertEqual(exc.response.raw_content, {'errors': [MockForm.ERROR_TEXT]})
else:
self.fail('ErrorResponse was not raised') #pragma: no cover
@@ -94,26 +94,26 @@ class TestFormValidation(TestCase):
"""Tests which check basic form validation.
Also includes the same set of tests with a ModelFormValidator for which the form has been explicitly set.
(ModelFormValidator should behave as FormValidator if a form is set rather than relying on the default ModelForm)"""
- def setUp(self):
+ def setUp(self):
class MockForm(forms.Form):
qwerty = forms.CharField(required=True)
class MockFormResource(FormResource):
form = MockForm
-
+
class MockModelResource(ModelResource):
form = MockForm
-
+
class MockFormView(View):
resource = MockFormResource
-
+
class MockModelFormView(View):
resource = MockModelResource
self.MockFormResource = MockFormResource
- self.MockModelResource = MockModelResource
+ self.MockModelResource = MockModelResource
self.MockFormView = MockFormView
- self.MockModelFormView = MockModelFormView
+ self.MockModelFormView = MockModelFormView
def validation_returns_content_unchanged_if_already_valid_and_clean(self, validator):
@@ -130,22 +130,22 @@ class TestFormValidation(TestCase):
"""If some (otherwise valid) content includes fields that are not in the form then validation should fail.
It might be okay on normal form submission, but for Web APIs we oughta get strict, as it'll help show up
broken clients more easily (eg submitting content with a misnamed field)"""
- content = {'qwerty': 'uiop', 'extra': 'extra'}
+ content = {'qwerty': 'uiop', 'extra': 'extra'}
self.assertRaises(ErrorResponse, validator.validate_request, content, None)
def validation_allows_extra_fields_if_explicitly_set(self, validator):
"""If we include an allowed_extra_fields paramater on _validate, then allow fields with those names."""
- content = {'qwerty': 'uiop', 'extra': 'extra'}
+ content = {'qwerty': 'uiop', 'extra': 'extra'}
validator._validate(content, None, allowed_extra_fields=('extra',))
def validation_does_not_require_extra_fields_if_explicitly_set(self, validator):
"""If we include an allowed_extra_fields paramater on _validate, then do not fail if we do not have fields with those names."""
- content = {'qwerty': 'uiop'}
+ content = {'qwerty': 'uiop'}
self.assertEqual(validator._validate(content, None, allowed_extra_fields=('extra',)), content)
def validation_failed_due_to_no_content_returns_appropriate_message(self, validator):
"""If validation fails due to no content, ensure the response contains a single non-field error"""
- content = {}
+ content = {}
try:
validator.validate_request(content, None)
except ErrorResponse, exc:
@@ -158,7 +158,7 @@ class TestFormValidation(TestCase):
content = {'qwerty': ''}
try:
validator.validate_request(content, None)
- except ErrorResponse, exc:
+ except ErrorResponse, exc:
self.assertEqual(exc.response.raw_content, {'field-errors': {'qwerty': ['This field is required.']}})
else:
self.fail('ResourceException was not raised') #pragma: no cover
@@ -168,17 +168,17 @@ class TestFormValidation(TestCase):
content = {'qwerty': 'uiop', 'extra': 'extra'}
try:
validator.validate_request(content, None)
- except ErrorResponse, exc:
+ except ErrorResponse, exc:
self.assertEqual(exc.response.raw_content, {'field-errors': {'extra': ['This field does not exist.']}})
else:
self.fail('ResourceException was not raised') #pragma: no cover
-
+
def validation_failed_due_to_multiple_errors_returns_appropriate_message(self, validator):
"""If validation for multiple reasons, ensure the response contains each error"""
content = {'qwerty': '', 'extra': 'extra'}
try:
validator.validate_request(content, None)
- except ErrorResponse, exc:
+ except ErrorResponse, exc:
self.assertEqual(exc.response.raw_content, {'field-errors': {'qwerty': ['This field is required.'],
'extra': ['This field does not exist.']}})
else:
@@ -263,23 +263,23 @@ class TestFormValidation(TestCase):
class TestModelFormValidator(TestCase):
"""Tests specific to ModelFormValidatorMixin"""
-
+
def setUp(self):
- """Create a validator for a model with two fields and a property."""
+ """Create a validator for a model with two fields and a property."""
class MockModel(models.Model):
qwerty = models.CharField(max_length=256)
uiop = models.CharField(max_length=256, blank=True)
-
+
@property
def readonly(self):
return 'read only'
-
+
class MockResource(ModelResource):
model = MockModel
-
+
class MockView(View):
resource = MockResource
-
+
self.validator = MockResource(MockView)
@@ -299,19 +299,19 @@ class TestModelFormValidator(TestCase):
broken clients more easily (eg submitting content with a misnamed field)"""
content = {'qwerty': 'example', 'uiop':'example', 'readonly': 'read only', 'extra': 'extra'}
self.assertRaises(ErrorResponse, self.validator.validate_request, content, None)
-
+
def test_validate_requires_fields_on_model_forms(self):
"""If some (otherwise valid) content includes fields that are not in the form then validation should fail.
It might be okay on normal form submission, but for Web APIs we oughta get strict, as it'll help show up
broken clients more easily (eg submitting content with a misnamed field)"""
- content = {'readonly': 'read only'}
+ content = {'readonly': 'read only'}
self.assertRaises(ErrorResponse, self.validator.validate_request, content, None)
-
+
def test_validate_does_not_require_blankable_fields_on_model_forms(self):
"""Test standard ModelForm validation behaviour - fields with blank=True are not required."""
content = {'qwerty':'example', 'readonly': 'read only'}
self.validator.validate_request(content, None)
-
+
def test_model_form_validator_uses_model_forms(self):
self.assertTrue(isinstance(self.validator.get_bound_form(), forms.ModelForm))
diff --git a/djangorestframework/tests/views.py b/djangorestframework/tests/views.py
index b0f9d6d4..e03f6615 100644
--- a/djangorestframework/tests/views.py
+++ b/djangorestframework/tests/views.py
@@ -23,17 +23,17 @@ class ResourceMockView(View):
foo = forms.BooleanField(required=False)
bar = forms.IntegerField(help_text='Must be an integer.')
baz = forms.CharField(max_length=32)
-
+
form = MockForm
class MockResource(ModelResource):
"""This is a mock model-based resource"""
-
+
class MockResourceModel(models.Model):
foo = models.BooleanField()
bar = models.IntegerField(help_text='Must be an integer.')
baz = models.CharField(max_length=32, help_text='Free text. Max length 32 chars.')
-
+
model = MockResourceModel
fields = ('foo', 'bar', 'baz')
@@ -50,62 +50,62 @@ urlpatterns = patterns('djangorestframework.utils.staticviews',
class BaseViewTests(TestCase):
"""Test the base view class of djangorestframework"""
- urls = 'djangorestframework.tests.views'
-
+ urls = 'djangorestframework.tests.views'
+
def test_options_method_simple_view(self):
response = self.client.options('/mock/')
- self._verify_options_response(response,
- name='Mock',
+ self._verify_options_response(response,
+ name='Mock',
description='This is a basic mock view')
-
+
def test_options_method_resource_view(self):
response = self.client.options('/resourcemock/')
- self._verify_options_response(response,
- name='Resource Mock',
- description='This is a resource-based mock view',
- fields={'foo':'BooleanField',
- 'bar':'IntegerField',
- 'baz':'CharField',
+ self._verify_options_response(response,
+ name='Resource Mock',
+ description='This is a resource-based mock view',
+ fields={'foo':'BooleanField',
+ 'bar':'IntegerField',
+ 'baz':'CharField',
})
-
+
def test_options_method_model_resource_list_view(self):
response = self.client.options('/model/')
- self._verify_options_response(response,
- name='Mock List',
- description='This is a mock model-based resource',
- fields={'foo':'BooleanField',
- 'bar':'IntegerField',
- 'baz':'CharField',
+ self._verify_options_response(response,
+ name='Mock List',
+ description='This is a mock model-based resource',
+ fields={'foo':'BooleanField',
+ 'bar':'IntegerField',
+ 'baz':'CharField',
})
def test_options_method_model_resource_detail_view(self):
response = self.client.options('/model/0/')
- self._verify_options_response(response,
- name='Mock Instance',
- description='This is a mock model-based resource',
- fields={'foo':'BooleanField',
- 'bar':'IntegerField',
- 'baz':'CharField',
+ self._verify_options_response(response,
+ name='Mock Instance',
+ description='This is a mock model-based resource',
+ fields={'foo':'BooleanField',
+ 'bar':'IntegerField',
+ 'baz':'CharField',
})
- def _verify_options_response(self, response, name, description, fields=None, status=200,
+ def _verify_options_response(self, response, name, description, fields=None, status=200,
mime_type='application/json'):
self.assertEqual(response.status_code, status)
self.assertEqual(response['Content-Type'].split(';')[0], mime_type)
parser = JSONParser(None)
(data, files) = parser.parse(StringIO(response.content))
- self.assertTrue('application/json' in data['renders'])
- self.assertEqual(name, data['name'])
- self.assertEqual(description, data['description'])
+ self.assertTrue('application/json' in data['renders'])
+ self.assertEqual(name, data['name'])
+ self.assertEqual(description, data['description'])
if fields is None:
self.assertFalse(hasattr(data, 'fields'))
else:
- self.assertEqual(data['fields'], fields)
+ self.assertEqual(data['fields'], fields)
class ExtraViewsTests(TestCase):
"""Test the extra views djangorestframework provides"""
- urls = 'djangorestframework.tests.views'
+ urls = 'djangorestframework.tests.views'
def test_robots_view(self):
"""Ensure the robots view exists"""