aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework/tests/parsers.py
diff options
context:
space:
mode:
authorAlen Mujezinovic2011-06-09 16:24:27 +0100
committerAlen Mujezinovic2011-06-09 16:24:27 +0100
commita848923a394853e7ed30f14189703c4afaf0c772 (patch)
tree0491538f8511fd03d6a7e07fd67c6f7a8af77f68 /djangorestframework/tests/parsers.py
parentcf637e886b9b293e44de55b9f829b738fb286365 (diff)
downloaddjango-rest-framework-a848923a394853e7ed30f14189703c4afaf0c772.tar.bz2
Returning the dict from `parse_qs` in `FormParser` fails on forms.
Use `QueryDict` instead to return a value that is compatible with forms.
Diffstat (limited to 'djangorestframework/tests/parsers.py')
-rw-r--r--djangorestframework/tests/parsers.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/djangorestframework/tests/parsers.py b/djangorestframework/tests/parsers.py
index 3ab1a61c..656d63c8 100644
--- a/djangorestframework/tests/parsers.py
+++ b/djangorestframework/tests/parsers.py
@@ -131,3 +131,30 @@
# self.assertEqual(data['key1'], 'val1')
# self.assertEqual(files['file1'].read(), 'blablabla')
+from StringIO import StringIO
+from cgi import parse_qs
+from django import forms
+from django.test import TestCase
+from djangorestframework.parsers import FormParser
+
+class Form(forms.Form):
+ field1 = forms.CharField(max_length=3)
+ field2 = forms.CharField()
+
+class TestFormParser(TestCase):
+ def setUp(self):
+ self.string = "field1=abc&field2=defghijk"
+
+ def test_fail(self):
+ """ Demonstrate that `parse_qs` fails on forms """
+ data = parse_qs(self.string, keep_blank_values=True)
+ self.assertEqual(Form(data).is_valid(), False)
+
+ def test_parse(self):
+ """ Make sure the `QueryDict` works OK """
+ parser = FormParser(None)
+
+ stream = StringIO(self.string)
+ (data, files) = parser.parse(stream)
+
+ self.assertEqual(Form(data).is_valid(), True)