Skip to content

Commit bdfab6f

Browse files
committed
ignore empty keys
if the API returns keys with as key a falsey value, do not represent that key value pair in the mapping
1 parent 889c299 commit bdfab6f

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

consul_kv/api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ def get_kv(k=None, recurse=False, endpoint=DEFAULT_KV_ENDPOINT, timeout=socket._
9797
# values are stored base64 encoded in consul, they
9898
# are decoded before returned by this function.
9999
r['Key']: b64decode(r['Value']).decode('utf-8')
100-
if r['Value'] else None for r in result
100+
if r['Value'] else None for r in result if r['Key']
101101
}
102102
return mapping
103103

tests/unit/api/test_get_kv.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,16 @@ def test_get_kv_returns_empty_results_as_none(self):
9292
'key1': None
9393
}
9494
self.assertEqual(ret, expected_mapping)
95+
96+
def test_get_kv_ignores_empty_keys(self):
97+
self.json_dump = '[{"Key": "", "Value": null}]'
98+
self.request.urlopen.return_value.__enter__ = lambda x: Mock(
99+
read=lambda: Mock(
100+
decode=lambda _: self.json_dump
101+
)
102+
)
103+
104+
ret = get_kv('some/path', recurse=True)
105+
106+
expected_mapping = {}
107+
self.assertEqual(ret, expected_mapping)

0 commit comments

Comments
 (0)