diff options
author | Zuul <zuul@review.opendev.org> | 2019-07-10 18:54:30 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2019-07-10 18:54:30 +0000 |
commit | 2fcd4d872713dc30e7352845c37515280f1d21ab (patch) | |
tree | 76024c37110dfa755e8d0e752b1537c152aba3cf /tests/unit/test_utils.py | |
parent | 7cf8541b38a8782decdd27cb37909e737ed67b8a (diff) | |
parent | 936631eac617c83bec1f1c44b1adcaa51d36329c (diff) | |
download | python-swiftclient-2fcd4d872713dc30e7352845c37515280f1d21ab.tar.gz |
Merge "Optionally display listings in raw json"
Diffstat (limited to 'tests/unit/test_utils.py')
-rw-r--r-- | tests/unit/test_utils.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index e54b90c..97abc44 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -14,6 +14,7 @@ # limitations under the License. import gzip +import json import unittest import mock import six @@ -638,3 +639,41 @@ class TestGetBody(unittest.TestCase): {'content-encoding': 'gzip'}, buf.getvalue()) self.assertEqual({'test': u'\u2603'}, result) + + +class JSONTracker(object): + def __init__(self, data): + self.data = data + self.calls = [] + + def __iter__(self): + for item in self.data: + self.calls.append(('read', item)) + yield item + + def write(self, s): + self.calls.append(('write', s)) + + +class TestJSONableIterable(unittest.TestCase): + def test_json_dump_iterencodes(self): + t = JSONTracker([1, 'fish', 2, 'fish']) + json.dump(u.JSONableIterable(t), t) + self.assertEqual(t.calls, [ + ('read', 1), + ('write', '[1'), + ('read', 'fish'), + ('write', ', "fish"'), + ('read', 2), + ('write', ', 2'), + ('read', 'fish'), + ('write', ', "fish"'), + ('write', ']'), + ]) + + def test_json_dump_empty_iter(self): + t = JSONTracker([]) + json.dump(u.JSONableIterable(t), t) + self.assertEqual(t.calls, [ + ('write', '[]'), + ]) |