From 4c74c6911c6e6f306bc51689d44774a5543a0694 Mon Sep 17 00:00:00 2001 From: Honza Kral Date: Fri, 3 May 2013 17:56:27 +0200 Subject: [PATCH] Serialization error tests --- elasticsearch/serializer.py | 4 ++-- test_elasticsearch/test_serializer.py | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/elasticsearch/serializer.py b/elasticsearch/serializer.py index 394bc798..0209b948 100644 --- a/elasticsearch/serializer.py +++ b/elasticsearch/serializer.py @@ -12,13 +12,13 @@ class JSONSerializer(object): def loads(self, s): try: return json.loads(s) - except ValueError as e: + except (ValueError, TypeError) as e: raise SerializationError(e) def dumps(self, data): try: return json.dumps(data, default=self.default) - except ValueError as e: + except (ValueError, TypeError) as e: raise SerializationError(e) diff --git a/test_elasticsearch/test_serializer.py b/test_elasticsearch/test_serializer.py index 3727c5c9..d994ce67 100644 --- a/test_elasticsearch/test_serializer.py +++ b/test_elasticsearch/test_serializer.py @@ -2,7 +2,16 @@ from datetime import datetime from unittest import TestCase from elasticsearch.serializer import JSONSerializer +from elasticsearch.exceptions import SerializationError class TestJSONSerializer(TestCase): def test_datetime_serialization(self): self.assertEquals(u'{"d": "2010-10-01T02:30:00"}', JSONSerializer().dumps({'d': datetime(2010, 10, 1, 2, 30)})) + + def test_raises_serialization_error_on_dump_error(self): + self.assertRaises(SerializationError, JSONSerializer().dumps, object()) + + def test_raises_serialization_error_on_load_error(self): + self.assertRaises(SerializationError, JSONSerializer().loads, object()) + self.assertRaises(SerializationError, JSONSerializer().loads, '') + self.assertRaises(SerializationError, JSONSerializer().loads, '{{')