diff --git a/tests/test_http.py b/tests/test_http.py index c727c6a2..7fd42e0d 100644 --- a/tests/test_http.py +++ b/tests/test_http.py @@ -15,12 +15,14 @@ import httplib import socket +import StringIO import unittest import mox from glanceclient import exc from glanceclient.common import http +from tests import utils class TestClient(unittest.TestCase): @@ -53,3 +55,11 @@ class TestClient(unittest.TestCase): self.assertTrue(endpoint in comm_err.message, fail_msg) finally: m.UnsetStubs() + + +class TestResponseBodyIterator(unittest.TestCase): + def test_iter_default_chunk_size_64k(self): + resp = utils.FakeResponse({}, StringIO.StringIO('X' * 98304)) + iterator = http.ResponseBodyIterator(resp) + chunks = list(iterator) + self.assertEqual(chunks, ['X' * 65536, 'X' * 32768]) diff --git a/tests/utils.py b/tests/utils.py index 95a0f0a9..3727b423 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -40,11 +40,19 @@ class FakeAPI(object): class FakeResponse(object): - def __init__(self, headers): + def __init__(self, headers, body=None): + """ + :param headers: dict representing HTTP response headers + :param body: file-like object + """ self.headers = headers + self.body = body def getheaders(self): return copy.deepcopy(self.headers).items() def getheader(self, key, default): return self.headers.get(key, default) + + def read(self, amt): + return self.body.read(amt)