Enable deserialization of different content types coming from the server.
This commit is contained in:
@@ -4,8 +4,8 @@ import sys
|
||||
from datetime import datetime
|
||||
from decimal import Decimal
|
||||
|
||||
from elasticsearch.serializer import JSONSerializer
|
||||
from elasticsearch.exceptions import SerializationError
|
||||
from elasticsearch.serializer import JSONSerializer, Deserializer, DEFAULT_SERIALIZERS, TextSerializer
|
||||
from elasticsearch.exceptions import SerializationError, ImproperlyConfigured
|
||||
|
||||
from .test_cases import TestCase, SkipTest
|
||||
|
||||
@@ -28,3 +28,30 @@ class TestJSONSerializer(TestCase):
|
||||
|
||||
def test_strings_are_left_untouched(self):
|
||||
self.assertEquals(u"你好", JSONSerializer().dumps(u"你好"))
|
||||
|
||||
|
||||
class TestTextSerializer(TestCase):
|
||||
def test_strings_are_left_untouched(self):
|
||||
self.assertEquals(u"你好", TextSerializer().dumps(u"你好"))
|
||||
|
||||
def test_raises_serialization_error_on_dump_error(self):
|
||||
self.assertRaises(SerializationError, TextSerializer().dumps, {})
|
||||
|
||||
|
||||
class TestDeserializer(TestCase):
|
||||
def setUp(self):
|
||||
super(TestDeserializer, self).setUp()
|
||||
self.de = Deserializer(DEFAULT_SERIALIZERS)
|
||||
|
||||
def test_deserializes_json_by_default(self):
|
||||
self.assertEquals({"some": "data"}, self.de.loads('{"some":"data"}'))
|
||||
|
||||
def test_deserializes_text_with_correct_ct(self):
|
||||
self.assertEquals('{"some":"data"}', self.de.loads('{"some":"data"}', 'text/plain'))
|
||||
self.assertEquals('{"some":"data"}', self.de.loads('{"some":"data"}', 'text/plain; charset=whatever'))
|
||||
|
||||
def test_raises_serialization_error_on_unknown_mimetype(self):
|
||||
self.assertRaises(SerializationError, self.de.loads, '{}', 'text/html')
|
||||
|
||||
def test_raises_improperly_configured_when_default_mimetype_cannot_be_deserialized(self):
|
||||
self.assertRaises(ImproperlyConfigured, Deserializer, {})
|
||||
|
||||
Reference in New Issue
Block a user