@@ -173,8 +173,8 @@ def send_req(ctx, cconfig, client, path, body, method='POST'):
173173 headers = {'X-Vault-Token' : token }
174174 req .request (method , path , headers = headers , body = body )
175175 resp = req .getresponse ()
176- log .info (resp .read ())
177176 if not (resp .status >= 200 and resp .status < 300 ):
177+ log .info (resp .read ())
178178 raise Exception ("Request to Vault server failed with status %d" % resp .status )
179179 return resp
180180
@@ -198,6 +198,7 @@ def create_secrets(ctx, config):
198198 exportable = secret .get ("exportable" , flavor == "old" )
199199
200200 if engine == 'kv' :
201+ path = urljoin ('data/' , path )
201202 try :
202203 data = {
203204 "data" : {
@@ -216,8 +217,21 @@ def create_secrets(ctx, config):
216217 ctx .vault .keys [cclient ].append ({ 'Path' : path });
217218
218219 log .info ("secrets created" )
220+
221+ list_url = prefix
222+ if engine == 'kv' :
223+ list_url = urljoin (prefix , 'metadata' )
224+
225+ resp = send_req (ctx , cconfig , cclient , list_url , b'' , 'LIST' )
226+ keys_created = json .loads (resp .read ())['data' ]['keys' ]
227+ assert len (keys_created ) == len (ctx .vault .keys [cclient ])
228+
219229 yield
220230
231+ # fetch another listing and verify that no additional keys are left over
232+ resp = send_req (ctx , cconfig , cclient , list_url , b'' , 'LIST' )
233+ keys_after = json .loads (resp .read ())['data' ]['keys' ]
234+ assert keys_created == keys_after
221235
222236@contextlib .contextmanager
223237def task (ctx , config ):
0 commit comments