Make container list --all work

The caller in openstackclient/object/v1/object.py passed a keyword
argument full_listing, but the eventual callee container_list()
expected all_data. So, --all did not work at all.

The issue passed undetected because --all did not have a test,
so we added a unit test.

In addition, exisiting tests were using a test set that did
not look like the real container listing, so we changed
LIST_CONTAINER_RESP to be realistic.

Change-Id: Id0604bcab25892e43c26cd6656b2b2eef5daa69b
This commit is contained in:
Pete Zaitcev 2020-05-15 01:00:32 -05:00
parent fdefe5558b
commit 41a2e82939
2 changed files with 36 additions and 36 deletions

View File

@ -87,7 +87,7 @@ class APIv1(api.BaseAPI):
def container_list(
self,
all_data=False,
full_listing=False,
limit=None,
marker=None,
end_marker=None,
@ -96,7 +96,7 @@ class APIv1(api.BaseAPI):
):
"""Get containers in an account
:param boolean all_data:
:param boolean full_listing:
if True, return a full listing, else returns a max of
10000 listings
:param integer limit:
@ -113,7 +113,7 @@ class APIv1(api.BaseAPI):
params['format'] = 'json'
if all_data:
if full_listing:
data = listing = self.container_list(
limit=limit,
marker=marker,
@ -299,7 +299,7 @@ class APIv1(api.BaseAPI):
def object_list(
self,
container=None,
all_data=False,
full_listing=False,
limit=None,
marker=None,
end_marker=None,
@ -311,7 +311,7 @@ class APIv1(api.BaseAPI):
:param string container:
container name to get a listing for
:param boolean all_data:
:param boolean full_listing:
if True, return a full listing, else returns a max of
10000 listings
:param integer limit:
@ -332,7 +332,7 @@ class APIv1(api.BaseAPI):
return None
params['format'] = 'json'
if all_data:
if full_listing:
data = listing = self.object_list(
container=container,
limit=limit,

View File

@ -30,8 +30,10 @@ FAKE_CONTAINER = 'rainbarrel'
FAKE_OBJECT = 'spigot'
LIST_CONTAINER_RESP = [
'qaz',
'fred',
{"name": "qaz", "count": 0, "bytes": 0,
"last_modified": "2020-05-16T05:52:07.377550"},
{"name": "fred", "count": 0, "bytes": 0,
"last_modified": "2020-05-16T05:55:07.377550"},
]
LIST_OBJECT_RESP = [
@ -117,34 +119,32 @@ class TestContainer(TestObjectAPIv1):
)
self.assertEqual(LIST_CONTAINER_RESP, ret)
# def test_container_list_full_listing(self):
# sess = self.app.client_manager.session
#
# def side_effect(*args, **kwargs):
# rv = sess.get().json.return_value
# sess.get().json.return_value = []
# sess.get().json.side_effect = None
# return rv
#
# resp = [{'name': 'is-name'}]
# sess.get().json.return_value = resp
# sess.get().json.side_effect = side_effect
#
# data = lib_container.list_containers(
# self.app.client_manager.session,
# fake_url,
# full_listing=True,
# )
#
# # Check expected values
# sess.get.assert_called_with(
# fake_url,
# params={
# 'format': 'json',
# 'marker': 'is-name',
# }
# )
# self.assertEqual(resp, data)
def test_container_list_full_listing(self):
self.requests_mock.register_uri(
'GET',
FAKE_URL + '?limit=1&format=json',
json=[LIST_CONTAINER_RESP[0]],
status_code=200,
)
self.requests_mock.register_uri(
'GET',
FAKE_URL +
'?marker=%s&limit=1&format=json' % LIST_CONTAINER_RESP[0]['name'],
json=[LIST_CONTAINER_RESP[1]],
status_code=200,
)
self.requests_mock.register_uri(
'GET',
FAKE_URL +
'?marker=%s&limit=1&format=json' % LIST_CONTAINER_RESP[1]['name'],
json=[],
status_code=200,
)
ret = self.api.container_list(
limit=1,
full_listing=True,
)
self.assertEqual(LIST_CONTAINER_RESP, ret)
def test_container_show(self):
headers = {