This repository has been archived by the owner on May 10, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Catch both JSONDecodeError and ValueError and add a unit test to conf…
…irm that both are caught and the expected service exception gets raised.
- Loading branch information
1 parent
d5a5c01
commit 954a50c
Showing
2 changed files
with
53 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
import mock | ||
from boto.compat import json | ||
from tests.unit import unittest | ||
|
||
from .test_search import HOSTNAME, CloudSearchSearchBaseTest | ||
from boto.cloudsearch.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 = '{}' | ||
|
||
def test_no_simplejson_value_error(self): | ||
with mock.patch.object(json, 'loads', fake_loads_value_error): | ||
search = SearchConnection(endpoint=HOSTNAME) | ||
|
||
try: | ||
search.search(q='test') | ||
self.fail('This should never run!') | ||
except SearchServiceException, err: | ||
self.assertTrue('non-json' in str(err)) | ||
|
||
@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) | ||
|
||
try: | ||
search.search(q='test') | ||
self.fail('This should never run!') | ||
except SearchServiceException, err: | ||
self.assertTrue('non-json' in str(err)) |