aboutsummaryrefslogtreecommitdiffstats
path: root/src/testapp/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/testapp/tests.py')
-rw-r--r--src/testapp/tests.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/testapp/tests.py b/src/testapp/tests.py
new file mode 100644
index 00000000..5543cd96
--- /dev/null
+++ b/src/testapp/tests.py
@@ -0,0 +1,54 @@
+"""
+This file demonstrates two different styles of tests (one doctest and one
+unittest). These will both pass when you run "manage.py test".
+
+Replace these with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+from django.core.urlresolvers import reverse
+from testapp.views import ReadOnlyResource, MirroringWriteResource
+
+class AcceptHeaderTests(TestCase):
+ def assert_accept_mimetype(self, mimetype, expect=None, expect_match=True):
+ """
+ Assert that a request with given mimetype in the accept header,
+ gives a response with the appropriate content-type.
+ """
+ if expect is None:
+ expect = mimetype
+
+ resp = self.client.get(reverse(ReadOnlyResource), HTTP_ACCEPT=mimetype)
+
+ if expect_match:
+ self.assertEquals(resp['content-type'], expect)
+ else:
+ self.assertNotEquals(resp['content-type'], expect)
+
+ def test_accept_xml(self):
+ self.assert_accept_mimetype('application/xml')
+
+ def test_accept_json(self):
+ self.assert_accept_mimetype('application/json')
+
+ def test_accept_xml_prefered_to_json(self):
+ self.assert_accept_mimetype('application/xml,q=0.9;application/json,q=0.1', expect='application/xml')
+
+ def test_accept_json_prefered_to_xml(self):
+ self.assert_accept_mimetype('application/json,q=0.9;application/xml,q=0.1', expect='application/json')
+
+ def test_dont_accept_invalid(self):
+ self.assert_accept_mimetype('application/invalid', expect_match=False)
+
+ def test_invalid_accept_header_returns_406(self):
+ resp = self.client.get(reverse(ReadOnlyResource), HTTP_ACCEPT='invalid/invalid')
+ self.assertEquals(resp.status_code, 406)
+
+class AllowedMethodsTests(TestCase):
+ def test_write_on_read_only_resource_returns_405(self):
+ resp = self.client.put(reverse(ReadOnlyResource), {})
+ self.assertEquals(resp.status_code, 405)
+
+ def test_read_on_write_only_resource_returns_405(self):
+ resp = self.client.get(reverse(MirroringWriteResource))
+ self.assertEquals(resp.status_code, 405)