Index: third_party/gsutil/third_party/boto/tests/unit/cloudsearch2/test_exceptions.py |
diff --git a/third_party/gsutil/third_party/boto/tests/unit/cloudsearch2/test_exceptions.py b/third_party/gsutil/third_party/boto/tests/unit/cloudsearch2/test_exceptions.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ebf1b47cf7d402fb65b55ba460307c8455454354 |
--- /dev/null |
+++ b/third_party/gsutil/third_party/boto/tests/unit/cloudsearch2/test_exceptions.py |
@@ -0,0 +1,37 @@ |
+from boto.compat import json |
+from tests.compat import mock, unittest |
+ |
+from tests.unit.cloudsearch2.test_search import HOSTNAME, \ |
+ CloudSearchSearchBaseTest |
+from boto.cloudsearch2.search import SearchConnection, SearchServiceException |
+ |
+ |
+def fake_loads_value_error(content, *args, **kwargs): |
+ """Callable to generate a fake ValueError""" |
+ raise ValueError("HAHAHA! Totally not simplejson & you gave me bad JSON.") |
+ |
+ |
+def fake_loads_json_error(content, *args, **kwargs): |
+ """Callable to generate a fake JSONDecodeError""" |
+ raise json.JSONDecodeError('Using simplejson & you gave me bad JSON.', |
+ '', 0) |
+ |
+ |
+class CloudSearchJSONExceptionTest(CloudSearchSearchBaseTest): |
+ response = b'{}' |
+ |
+ def test_no_simplejson_value_error(self): |
+ with mock.patch.object(json, 'loads', fake_loads_value_error): |
+ search = SearchConnection(endpoint=HOSTNAME) |
+ |
+ with self.assertRaisesRegexp(SearchServiceException, 'non-json'): |
+ search.search(q='test') |
+ |
+ @unittest.skipUnless(hasattr(json, 'JSONDecodeError'), |
+ 'requires simplejson') |
+ def test_simplejson_jsondecodeerror(self): |
+ with mock.patch.object(json, 'loads', fake_loads_json_error): |
+ search = SearchConnection(endpoint=HOSTNAME) |
+ |
+ with self.assertRaisesRegexp(SearchServiceException, 'non-json'): |
+ search.search(q='test') |